You are on page 1of 14

Moduri de lucru in Matlab

Exista doua moduri de lucru in Matlab: modul de lucru direct si modul de lucru cu fisiere
de tip “script”.
Exemplu. Se dau: a = 1, b = 2. Sa se calculeze, folosind modul de lucru direct in Matlab,
c = (a + b+1)0.15.

Variabile si constante speciale in Matlab

In Matlab exista o serie de variabile si constante cu anumite semnificatii, care nu trebuie


declarate si sunt accesibile global in orice fisier de tip .m . Dintre acestea mentionam cateva:

ans - cel mai recent raspuns (l.e., answer = raspuns). Este variabila creata in mod
automat, careia i se atribuie valoarea celei mai recente expresii neasignate.
Exemple:
>x=1.5; y=0.10; x^y <Enter>
ans =
1.0414
Deci variabilei ans i se atribuie valoarea expresiei x^y.

eps - returneaza precizia relativa in reprezentarea numerelor in modul virgula mobila


(epsilon masina, distanta dintre 1 si urmatorul numar reprezentabil in virgula mobila). In
unele functii Matlab, eps reprezinta toleranta implicita (eroarea maxima admisa, criteriul de
convergenta) in aproximarea solutiei, atribuita prin program, cu valoare diferita, in general, de
precizia masinii.
Exemple:
>eps <Enter>
ans =
2.220446049250313e-016

pi - returneaza valoarea numarului π ;


Exemple:
> pi <Enter>
ans =
3.141592653589793e+000

>4*atan(1) <Enter>
ans =
3.141592653589793e+000

>log(-1) <Enter>
ans =
0 +3.141592653589793e+0001

>sin(pi) <Enter>
ans =
1.224606353822377e-016

Valoarea functiei sin(pi) este foarte mica, dar nu zero, datorita erorilor care decurg din
reprezentarea in virgula mobila a numerelor pe un numar finit de biti.

i si j - unitati imaginare, folosite pentru reprezentarea numerelor complexe; pot fi


folosite si ca nume de variabile, de regula pentru variabilele de ciclare in instructiunile de
calcul repetitiv, prin redefinirea lor.
Exemple:
>i, j <Enter>
ans =
0 + 1.00000000000000i
ans =
0 + 1.00000000000000i
>a=1+3i, b=2+4j, c=a+b <Enter>

Inf - plus infinit, reprezentat in aritmetica virgula mobila; in calcule, se obtine ca


rezultat al impartirii unui numar prin zero sau prin depasirea celui mai mare numar
reprezentabil in aritmetica curenta (overflow).
Exemple:
>1/0, exp(710), Inf+Inf <Enter>

NaN - Nu este un numar (l. e., Not-a-Number), in aritmetica virgula mobila. Se


obtine ca rezultat al unor operatii: 0/0, Inf/Inf, Inf-Inf s.a.
Exemple:
>0/0, Inf/Inf, Inf-Inf, Nan-NaN <Enter>

realmax - cel mai mare numar pozitiv reprezentabil in virgula mobila pe calculatorul
curent.
realmin - cel mai mic numar pozitiv reprezentat normalizat in modul virgula mobila;
orice numar mai mic este egalat cu zero sau reprezentat “denormal” in modul virgula mobila.
Exemple:
> realmin <Enter>
ans =
2.225073858507202e-308

Constante si variabile in Matlab

Constantele in Matlab pot fi de tip numeric si de tip caracter sir. Constantele numerice
pot fi numere reale sau numere complexe.
Exemple:
1.2000 ; 12e-001 ; 1.0+2i ;
Precizia relativa, eps, in reprezentarea numerelor este aproximata cu 16 cifre
semnificative. Limitele superioara si inferioara sunt 10308 (realmax), respectiv 10-309
(realmin).
Constantele de tip sir sunt definite printr-un sir de caractere (litere, cifre, spatii albe),
delimitat prin apostrof (‘).
Exemple:
‘abcd’ ; ‘a1 a2 a3’ ; ‘Ionescu V. Ion’
Variabilele in Matlab pot fi numerice sau de tip sir si sunt reprezentate ca matrice.
Astfel, un scalar este definit si tratat ca matrice (1x1), un vector ca matrice (1xn) sau (nx1), o
matrice ca matrice (nxm). Valorile momentane ale variabilelor se definesc prin operatiunea de
atribuire,
variabila = expresie
unde variabila este un nume legal in Matlab (incepe cu o litera, contine litere din alfabetul
anglo-saxon si cifre, literele mari nu se confunda cu cele mici), iar expresie reprezinta o
constanta, expresie aritmetica, expresie logica, functie Matlab.
Exemple:
> a=1.2, b=a+2.5, c=a>b, d=sin(a)
Definirea matricelor in Matlab

Elementele unei matrice pot fi constante de tip sir sau numere reale, complexe, expresii
Matlab si sunt referite prin indici cuprinsi in paranteze rotunde, separati intre ei prin virgula.
Definirea matricelor poate fi facuta:
a) prin introducerea listei de elemente:
nume_matrice = [lista_de_elemente]
unde nume_matrice este un nume legal de variabila (trebuie sa inceapa cu o litera, sa
contina numai caractere legale - litere din alfabetul anglo-saxon si, eventual, cifre).
Elementele din lista_de_elemente sunt separate intre ele, pe linie, prin unul sau mai
multe spatii albe (blank-uri), iar liniile sunt separate intre ele prin caracterul punct si virgula
(;) sau prin introducere elementelor pe linia ecran urmatoare.
Exemple:
>a=1.20, size(a)
a=
1.2000
ans =
1 1
>A=[0.1 2.5 3.1 4.2 0.3]
A=
0.1000 2.5000 3.1000 4.2000 0.3000
>A=[0.1, 2.5, 3.1, 4.2, 0.3]
A=
0.1000 2.5000 3.1000 4.2000 0.3000
>B=[1 0 2 4 2; 3 2 1 0 0; 5 4 3 2 1]
B=
1 0 2 4 2
3 2 1 0 0
5 4 3 2 1
>C=[1 0 1 -1
1234
4 3 2 1]
C=
1 0 1 -1
1 2 3 4
4 3 2 1
>a=1; b=2; c=3; D=[a b; c sin(a)]
D=
1.0000 2.0000
3.0000 0.8415

b) prin generarea listei de elemente folosind instructiuni si functii:


nume_matrice = instructiune, sau
nume_matrice = functie
Exemple:
> A=[1:5; 5:-1:1]
A=
1 2 3 4 5
5 4 3 2 1
> B=zeros(3,3)
B=
0 0 0
0 0 0
0 0 0
> C=ones(3,3)
C=
1 1 1
1 1 1
1 1 1

> D=eye(3)
D=
1 0 0
0 1 0
0 0 1
> x=[1 2 3; 0.5 1.5 2.5], A=sin(x)
x=
1.0000 2.0000 3.0000
0.5000 1.5000 2.5000
A=
0.8415 0.9093 0.1411
0.4794 0.9975 0.5985

c) prin incarcare din fisiere de date:


Exemple:
>A=[1:3; 0.5:0.5:1.5]; save
Saving to: matlab.mat
>clear; load; A
Loading from: matlab.mat
A=
1.0000 2.0000 3.0000
0.5000 1.0000 1.5000
> B=[1:5; sqrt(1:5)]
B=
1.0000 2.0000 3.0000 4.0000 5.0000
1.0000 1.4142 1.7321 2.0000 2.2361
> B=[1:5; sqrt(1:5)]; save c:\fisier10.dat B -ascii
>clear; load c:\fisier10.dat; fisier10
fisier10 =
1.0000 2.0000 3.0000 4.0000 5.0000
1.0000 1.4142 1.7321 2.0000 2.2361

d) prin extragere din matrice mai mari sau prin compunere de matrice mai mici:
Exemple:
> A=[1:0.5:2.5; 2.5:-0.5:1]; B=A(1:2,1:3)
B=
1.0000 1.5000 2.0000
2.5000 2.0000 1.5000
> A=eye(3); B=zeros(3,1); C=[1 2 3]'; D=[A B C]
D=
1 0 0 0 1
0 1 0 0 2
0 0 1 0 3

Expresii aritmetice, relationale si logice

a) Expresii aritmetice

Expresiile aritmetice sunt definite prin operanzi, separati intre ei prin operatori
aritmetici. Operanzii pot fi constante sau variabile. Operatorii aritmetici in Matlab sunt
diferentiati dupa natura operanzilor. Astfel, pentru operatii intre scalari, operatii intre matrice
si operatii intre scalari si matrice (tablouri), se folosesc urmatorii operatori aritmetici:
Operatia Scalari Matrice Tablouri
Adunare + + +
Scadere - - -
Inmultire * * .*
Impartire la stanga \ \ .\
Impartire la dreapta / / ./
Ridicare la putere ^ ^ .^
Transpunere ‘ ‘ .’

Ordinea operatiilor aritmetice este cea din matematica obisnuita. Se folosesc numai
paranteze rotunde.
Exemple:
>a=1.2, b=0.10, c=a+b, d=a-b, e=a*b, f=a/b, g=a\b, h=a^b
a=
1.2000
b=
0.1000
c=
1.3000
d=
1.1000
e=
0.1200
f=
12.0000
g=
0.0833
h=
1.0184
> A=[0 1 2; 3 1 4; 5, 2 -6], B=eye(3), C=A+B, D=A-B, E=A*B, F=A/B, G=A\B, H=A^2, I=A'
A=
0 1 2
3 1 4
5 2 -6
B=
1 0 0
0 1 0
0 0 1
C=
1 1 2
3 2 4
5 2 -5
D=
-1 1 2
3 0 4
5 2 -7
E=
0 1 2
3 1 4
5 2 -6
F=
0 1 2
3 1 4
5 2 -6
G=
-0.3500 0.2500 0.0500
0.9500 -0.2500 0.1500
0.0250 0.1250 -0.0750
H=
13 5 -8
23 12 -14
-24 -5 54
I=
0 3 5
1 1 2
2 4 -6
> A=[1 0 1; -1 2 -3]; b=0.10, C=A+b, D=A-b, E=A.*b, F=A./b, G=A.^b
b=
0.1000

C=
1.1000 0.1000 1.1000
-0.9000 2.1000 -2.9000
D=
0.9000 -0.1000 0.9000
-1.1000 1.9000 -3.1000
E=
0.1000 0 0.1000
-0.1000 0.2000 -0.3000
F=
10 0 10
-10 20 -30
G=
1.0 0 1.0000
0.9511+ 0.3090i 1.0718 1.0615 + 0.3449i

b) Expresii relationale

Sunt constituite din constante, variabile, expresii aritmetice (operanzi), separate intre
ele prin operatori de relatie. Valoarea unei expresii relationale poate fi adevarat,
reprezentat numeric prin numarul 1, sau fals, reprezentat numeric prin numarul 0. In
Matlab, operatorii relationali compara doua matrice element cu element si returneaza
rezultatul intr-o matrice de aceleasi dimensiuni, cu elementele 0 sau 1.
Operatorii de relatie in Matlab sunt:

Operator Semnificatie
< mai mic; compara numai partea reala;
<= mai mic sau egal; compara numai partea reala;
> mai mare; compara numai partea reala;
>= mai mare sau egal; compara numai partea reala;
== identic; compara partea reala si partea imaginara;
~= diferit; compara partea reala si partea imaginara.

Exemple:
>A=[1 -1 2 -2; 0 1 2 3], B=ones(2,4), A<B, A<=B, A>B, A>=B, A==B, A~=B
A=
1 -1 2 -2
0 1 2 3
B=
1 1 1 1
1 1 1 1
ans =
0 1 0 1
1 0 0 0
ans =
1 1 0 1
1 1 0 0
ans =
0 0 1 0
0 0 1 1
ans =
1 0 1 0
0 1 1 1
ans =
1 0 0 0
0 1 0 0
ans =
0 1 1 1
1 0 1 1

c) Expresii logice

Sunt constituite din expresii relationale, separate intre ele prin operatori logici.
Valoarea unei expresii logice poate fi adevarat, reprezentat numeric prin numarul 1,
sau fals, reprezentat numeric prin numarul 0. In Matlab, operatorii logici opereaza asupra a
doua matrice in modul element cu element si returneaza rezultatul intr-o matrice cu aceleasi
dimensiuni, cu elementele 0 sau 1. Operatorii logici in Matlab sunt:

Operator Simbol Matlab Operatie logica Prioritate


NU ~= NU logic (negatie logica) 1
SI & SI logic 2
SAU | SAU logic 3

In plus, in Matlab, exista functiile logice xor, any si all.


xor(S,T) - pentru operatia logica SAU EXCLUSIV; returneaza:
1, daca fie S, fie T, dar nu amandoua, sunt diferite de zero;
0, in caz contrar.
any(T) - unde T este un vector, returneaza:
1, daca cel putin un element al vectorului T este diferit de zero;
0, in caz contrar;
all(T) - unde T este un vector, returneaza:
1, daca toate elementele vectorului T sunt diferite de zero;
0, in caz contrar.
Exemple:
>A=[-1 -2 -3; 1 2 3], B=ones(2,3), C=A-B, (A>B)&(A>C), (A>B)|(B<C), (A~=C)|(B~=C)
A=
-1 -2 -3
1 2 3
B=
1 1 1
1 1 1
C=
-2 -3 -4
0 1 2
ans =
0 0 0
0 1 1
ans =
0 0 0
0 1 1
ans =
1 1 1
1 1 1
> S=[0 0 1], T=[1 1 0], xor(S,T)
S=
0 0 1
T=
1 1 0
ans =
1 1 1
> T=[1 0 0],any(T)
T=
1 0 0
ans =
1
Instructiuni de programare Matlab

Instructiunea input - se foloseste pentru atribuire valori de la tastatura.


Exemple:
> d=input('Valoarea a = ')
Valoarea a = ? (se tasteaza o constanta numerica)
> nf=input('Nume fisier =','s')
Nume fisier =? (se tasteaza un sir de caractere)

Instructiunea disp - se foloseste pentru afisarea pe ecran a unui sir de caractere.


Exemple:
disp('test')
test

Instructiunea de testare logica if ... else ... end


Are sintaxa:
if expresie_logica
set_de_instructiuni_1
else
set_de_instructiuni_2
end
Daca expresie_logica are valoarea adevarat, se executa instructiunile din
set_de_instructiuni_1, in caz contrar, cele din set_de_instructiuni_2.
Exemple:
> a=2, if a<0, f=sin(a), else, f=cos(a), end
a=
2
f=
-0.4161

Instructiunea repetitiva for ... end


Are sintaxa:
for nume_variabila=limita_inferioara:pas_de_crestere:limita_superioara
set_de_instructiuni
end
Pentru fiecare valoare a variabilei nume_variabila se executa instructiunile din
set_de_instructiuni.
Exemple:
>clear; k=0; for x=0:0.5:1; k=k+1; X(k)=x; A(k)=sin(x); end; [X' A']
ans =
0 0
0.5000 0.4794
1.0000 0.8415

Instructiunea repetitiva while ... end


Are sintaxa:
while expresie_logica
set_de_instructiuni
end
Executa instructiunile din set_de_instructiuni atat timp cat expresie_logica are valoarea
adevarat.
Exemple:
> clear; x=0; k=0; while x<pi; k=k+1; x=x+0.50; f=sin(x); X(k)=x; F(k)=f; end; [X' F']
ans =
0.5000 0.4794
1.0000 0.8415
1.5000 0.9975
2.0000 0.9093
2.5000 0.5985
3.0000 0.1411
3.5000 -0.3508

Instructiunea break - intrerupe executia unei instructiuni de calcul repetitiv for sau while.
Exemple:
> clear; x=0; k=0; while x<pi; k=k+1; x=x+0.50; f=sin(x); X(k)=x; F(k)=f; if x>1.5; break; end,end; [X' F']
ans =
0.5000 0.4794
1.0000 0.8415
1.5000 0.9975
2.0000 0.9093
Instructiunea keyboard - plasata intr-un program Matlab, intrerupe executia programului si
transfera controlul utilizatorului catre tastatura. Este utila pentru depanarea programelor.
Caracterul ‘K’ indica, pe ecran, modul keyboard, orice instructiune Matlab fiind permisa,
inclusiv atribuirea de noi valori variabilelor curente. Iesire din modul keyboard se face tastand
comanda return.
Exemple:
A=zeros(1,2); for k=1:2; k, A(k)=input('A(k) = '); keyboard; end; A
k=
1
A(k) = -1
K» A(1)=3
A=
3 0
K» return
k=
2
A(k) = 1
K» return
A=
3 1