Documente Academic
Documente Profesional
Documente Cultură
CURS - 2 Matlab
CURS - 2 Matlab
CURS 2
1. Matrice, vectori i scalari. Notaii
MATLAB-ul este un pachet de programe care lucreaz numai cu un singur tip de obiecte, matrice
numerice rectangulare, cu elemente reale sau complexe. n acest sens, scalarii sunt asimilai matricelor
cu o linie i o coloan (1x1), iar vectorii sunt asimilai matricelor cu o linie (1xn) sau o coloan (nx1).
Operaiile i comenzile n MATLAB sunt aproape naturale, n sens matriceal, asemntor modului de
calcul obinuit. Astfel entitile:
1
1 2
1 2 3
A=
; B = 4 5 6 ; C = 2 ; D = [1 2 3]
3
4
3
sunt toate matrice n accepiunea MATLAB. A este o matrice 2x2, B este 2x3, C este 3x1, D este 3x1.
Elementele unei matrice, fie aceasta A, pot fi identificate prin una dintre notaiile: A[i,j], A(i,j) etc. i
semnific elementul de la intersecia liniei i cu coloana j. Ultima notaie, A(i,j), este cea care a fost
adoptat si n MATLAB. Dimensiunea unei matrice este precizat de o pereche de numere care arat
numrul de linii si coloane al matricei respective. (D este o matrice 3x1). O matrice cu o singur linie
sau o singur coloan se numete vector linie (D) sau vector coloan (C), elementele acesteia putnd fi
identificate cu un singur indice. O matrice cu o singur linie si o singur coloan este un scalar.
Pentru a face referire la un element A(i,j) al, unei matrice A, sunt necesari doi indici, indicele de linie i
indicele de coloan, n aceast ordine. Referirea unui element al unui vector poate fi fcut numai cu un
singur indice. Astfel:
A(2,1) = 3; B(1,3) = 3, C(2) = 2; D(3) = 3.
CURS 2
A=[l 2;3 4]
care returneaz rezultatul:
A=
1 2
3 4
Matricea A, astfel definit, poate fi utilizat n calcule sau poate fi salvat ntr-un fiier de date pentru o
folosire ulterioar.
Pentru matricele mari, la care datele de intrare nu ncap pe o singur linie, se poate proceda la
nlocuirea semnului ; cu Enter", ca n exemplu urmtor:
A=[l 2
3 4]
Elementele matricelor
Elementele matricelor pot fi numere reale sau complexe, precum si orice expresie MATLAB. De
exemplu, pentru:
x=[-1.3 sqrt(3)
(l+2+3)*4/5]
rezult:
x = [ -1.3000
1.7321
4.8000 ]
Elementele unei matrice pot fi referite cu indici cuprini ntre paranteze rotunde ()", ca n exemplul:
a = x(2) care returneaz:
a =1.7321
De remarcat c dac se asigneaz o valoare unui element care ocup o poziie n afara dimensiunii
maxime a matricei sau vectorului referit, dimensiunea acestuia este mrit automat pn la valoarea
indicelui noului element, iar elementele nedefinite sunt setate la valoarea zero. n acest sens,
instruciunea:
2
CURS 2
x(5)= abs(x(l))
returneaz rezultatul:
x = [-1.3000
1.7321
4.8000
1.3000]
iar instruciunea:
A(2,4)= 6
returneaz rezultatul:
A=
1 2 0 0
3 4 0 6
n exemplele de mai sus s-au utilizat 2 funcii MATLAB predefinite a cror denumire este rezervat:
abs modulul unui numr; sqrt rdcin ptrat
O modalitate de a construi matrice mari const n folosirea matricelor mici ca elemente. Spre exemplu,
din dou matrice 2x3 se poate construi o matrice 4x3; dimensiunile matricelor utilizate trebuie s fie
astfel alese nct s realizeze tablouri rectangulare complete.
Fie A1 i A2 cele dou matrice utilizate. Cu secvena urmtoare:
Al = [l 2;3 4]
A2 = [5 6;7 8]
A
= [Al; A2]
se obine rezultatul:
A=
1 2
3 4
5 6
7 8
O matrice mai mic poate fi extras din matrice mai mari utiliznd semnul :" (dou puncte). De
exemplu:
B = A(2:3,:)
extrage liniile doi si trei i toate coloanele din matricea curent A, obinndu-se matricea B:
3
CURS 2
B=
3 4
5 6
Declaraii i variabile
MATLAB-ul este un limbaj de expresii. Expresiile tiprite de utilizator sunt interpretate i evaluate.
Instruciunile MATLAB sunt, de cele mai multe ori, de forma:
variabila = expresie
sau, mai simplu:
expresie
Expresiile sunt compuse din operatori sau alte caractere speciale, din funcii i nume de variabile.
Evaluarea expresiei produce o matrice, care este afiat pe ecran i atribuit unei variabile. Dac
numele variabilei i semnul egal (variabila=) sunt omise, MATLAB-ul creaz automat o variabil cu
numele ans, ca n exemplul:
3/4
care returneaz:
ans= 0.7500
Orice instruciune este n mod normal terminat cu Enter". Dac ultimul caracter al acesteia este
punct-virgul ;, instruciunea este executat, dar tiprirea este suprimat. Utilizarea acestui caracter la
sfritul unei instruciuni n fiiere-M este necesar n situaiile n care nu se dorete afiarea datelor
intermediare. De exemplu:
A=[1 2 3; 4 5 6;7 8 9] ;
introduce matricea A, dar nu o afieaz. Tastarea numelui unei variabile urmat de Enter" afieaz
valoarea acesteia.
Dac expresia este aa de mare nct declaraia nu ncape pe o singur linie, se utilizeaz semnul ...
(trei puncte), urmat de Enter", pentru a preciza c instruciunea continu pe linia urmtoare. Astfel,
instruciunea:
S=1+2+3+...
4+5+6;
evalueaz suma celor ase numere i o atribuie variabilei S. Spaiile dintre semnele =, +, - i
numere sunt opionale.
Numele de variabile si funcii au ca prim caracter o liter, urmat de litere, cifre sau caracterul
underscore (adic _). Dei se pot folosi oricte caractere, MATLAB-ul reine ca nume de variabil
4
CURS 2
numai primele 19 caractere. MATLAB-ul face deosebirea ntre literele mari i mici (case sensitive),
astfel nct a" si A" sunt dou variabile distincte.
1.OPERAII ARITMETICE
Calculele aritmetice asupra tablourilor de date n MATLAB pot fi: - operaii dup regulile calculului
matriceal - operaii cu matrice; - operaii dup regulile calculului scalar - operaii cu tablouri.
Operatorii folosii n calculele aritmetice cu tablouri i matrice sunt prezentai n tabelul 1:
Tabelul 1. Operatori aritmetici MATLAB
Operaia
Adunarea
Scderea
nmulirea
.*
mprirea la stnga \
.\
mprirea la dreapta /
./
Ridicarea la putere
Transpunerea
CURS 2
Adunare
a+b
a+b
Scdere
a-b
a-b
nmulire
axb
a*b
mprire la dreapta a: b
a/b
mprire la stnga b: a
a\b
Ridicare la putere
ab
a^b
Expresiile aritmetice pot fi evaluate i rezultatul memorat n variabile specificate. Astfel, instruciunea:
x=a+b
atribuie variabilei x, suma dintre variabilele a si b. Instruciunea: k=k+1 atribute variabilei k o nou
valoare, egal cu suma dintre vechea valoare i constanta 1. n urma instruciunilor succesive:
CURS 2
parantezele
ridicarea la putere
nmulirea si mprirea
adunarea si scderea
CURS 2
Rezultatul unui calcul este mai mic dect 10-308 calculatorul nregistreaz valoarea zero.
n MATLAB rezultatul mpririi cu zero este . n acest caz se afieaz mesajul de atenionare
Warning:Divide by zero, dar calculele continu cu operandul .
Exemplul 1. Fie: A=[2 5 6], B=[4 3 2], p=2. S se calculeze: C=A-B, D=A-p i E=p-A. Cu secvena
MATLAB:
A=[2 5 6]; B=[4 3 2]; p=2; C=A-B
D=A-p
E=p-A
se obin rezultatele:
C = [-2
4]
D = [0
4] E = [0 -3 -4]
CURS 2
Exemplul 2. Fie: A=[2 5 6], B=[4 3 2], p=2. S se calculeze : C=A.*B, D=A.*p si E=p.*A . Cu
secvena MATLAB:
A=[2 5 6}; B=[4 3 2];p=2; C=A.*B D=A.*p E=p.*A
se obin rezultatele: C=[8 15 12] D=[4 10 12] E=[4 10 12]
1.2.3. mprirea la dreapta
Operaia de mprire Ia dreapta, element cu element, ntre dou tablouri este simbolizat cu operatorul
punct-slash ( ./ ). Instruciunea: Z=X./Y reprezint mprirea element cu element a tablourilor X si Y,
rezultnd elementele: Z(i,j) = X(i,j)/Y(i,j)
Exemplul 3. Fie: A=[2 5 6], B=[4 3 2], p=2. S se calculeze: C=A./B, D=A./p i E=p./A. Cu secvena
MATLAB:
A=[2 5 6]; B=[4 3 2]; p=2; C=A./B D=A . /p E=p./A
se obine rezultatul:
C=[0.5000
1.6667
3.0000]
D=[1.0000
2.5000
3.0000]
E=[1.0000
0.4000
0.3333]
Operaia de mprire la stnga, element cu element, ntre dou tablouri este simbolizat cu operatorul
punct-bakslash ( .\ ). Instruciunea: Z = X.\Y reprezint mprirea element cu element a tablourilor X i
Y, cu aceleai dimensiuni, rezultnd un tablou cu elementele: Z(i,j) = Y(i,j)/X(i,j)
Prin urmare: Z = X.\Y = Y./X
Exemplul 4. Fie: A=[2 5 6] B=[4 3 2] p=2. S se calculeze : C=A.\B , D=A.\p i E=p.\A Cu secvena
MATLAB:
A=[2 5 6]; B=[4 3 2]; p=2; C=A.\B D=A. \p E=p .\A se obin rezultatele:
9
CURS 2
C=[ 2.0000 0.6000 0.3333] D=[1.0000 0.4000 0.3333] E=[1.0000 2.5000 3.0000]
1.2.5. Ridicarea la putere
Operaia de ridicare la putere element cu element ntr-un tablou este simbolizat cu operatorul punct-^
(.^). Urmtoarea instruciune:
Z=X.^Y
reprezint ridicarea fiecrui element din tabloul X la puterea indicat de valoarea elementului din
aceeai poziie a tabloului Y, adic: Z(i,j) = X(i,j)^Y(i,j)
Dac X este un scalar, se las un blanc ntre scalar i operatorul de ridicare la putere .^ pentru a nu
interpreta punctul care indic operarea cu tablouri de elemente ca punctul zecimal.
Exemplul 5. Fie: A=[2 5 6], B=[4 3 2], p=2. S se calculeze : C=A.^B, D=A.^p i E=p.^A. Cu secvena
MATLAB:
A=[2 5 6}; B=[4 3 2]; p=2; C=A.^B D=A.^p E=p .^A
se obin rezultatele: C=[16 125 36] D=[4 25 36] E=[4 32 64]
1.2.6. Transpunerea tablourilor
Operaia de transpunere a unui tablou este simbolizat de operatorul punct-apostrof. Cu instruciunea:
Z=Y.'
liniile tabloului Y devin coloanele tabloului transpus Z. Acest lucru face ca un tablou Y cu dimensiunea
i 3 2* i
Cu secvena MATLAB:
Z=[l 1+i;i 3-2*i]; Z1=Z.'
se obin rezumatele: Z1 =
10
CURS 2
1.0000
0 +1.0000i
1.0000 + 1.0000i
3.0000 - 2.0000i
C=sum(A.*B)
Dac A este de dimensiunea 1xN i B de dimensiunea Nx1, atunci sunt posibile urmtoarele expresii
pentru calculul produsului scalar:
E=sum(A'.*B)
F=sum(A.*B')
Cosinusul unghiului vectorilor: A = ax i + a y j + az k ; B = bx i + by j + bz k se calculeaz cu relaia:
ax bx + a y by + az bz
A B
unde A i B sunt lungimile, norma sau modulul.
cos A, B = =
AB
ax2 + a y2 + az2 bx2 + by2 + bz2
Cu secvena MATLAB:
a=[3 -4 0]; b=[l 2 -2] ; ab=sum(a.*b);% -produsul scalar
mod_a=norm(a);mod_b=norm(b);
11
CURS 2
ab=-5
alfa= 109.4712 grade
1.3.2. Produsul vectorial
Produsul vectorial a doi vectori A i B :
i
C = A B = ax
j
ay
k
az
bx
by
bz
este un vector perpendicular pe planul celor doi vectori. Modulul produsului vectorial este:
C = A B sin A, B
De exemplu, dac A si B descriu vectorii cu ajutorul coordonatelor (proieciile dup axele Ox, Oy i
Oz), cu secvena MATLAB:
A=[ax ay az]; B=[bx by bz]; C= A'*B se obine ca rezultat matricea C, cu dimensiunea 3x3.
x
k j
C = k x
i
j i x
CURS 2
Exemplul 8. S se calculeze produsul vectorial si scalar al vectorilor: a = 5i 3 j k , b = i 2 j 2k
%produsul vectorial
PSl=sum(a.*b)
CURS 2
numrul coloanelor matricei X este egal cu numrul liniilor matricei Y, elementul Z(i,j) fiind suma
produselor dintre elementele liniei i cu elementele corespondente din coloana j. Produsul matricevector este un caz special al cazului genera! al produsului matrice-matrice. De asemenea, un scalar
poate poate fi nmulit cu orice matrice, realizndu-se nmulirea cu fiecare element al matricei; Z(i,j) =
a*X(i,j).
Exemplul 10. Fie matricele A, B i scalarul p din exemplul anterior. S se calculeze A*B, A*p.
1.4.3. mprirea la dreapta
Operaia de mprire la dreapta a dou matrice este simbolizat cu operatorul slash (/). Urmtoarea
instruciune: Z = X/Y
reprezint mprirea la dreapta a matricelor X i Y, i este identic cu X*Y-1 (Y-1 este inversa matricei
Y n MATLAB funcia de calcul a inversei unei matrice este inv).
Exemplul 11. Fie: A =[1 2;3 4], B=[5 6;7 8]. S se calculeze A/B n cele 2 moduri posibile
1.4.4. mprirea la stnga
Operaia de mprire la stnga a dou matrice este simbolizat cu operatorul backslash (\). Urmtoarea
instruciune: Z=X\Y reprezint mprirea la stnga a matricelor X i Y i este identic cu X-1*Y (X-1
este inversa matricei X).
14
CURS 2
Dac A este o matrice n x n, iar B este un vector coloan cu n componente, atunci X=A\B este soluia
sistemului de ecuaii AX=B, obinut prin eliminarea Gauss. Dac unul dintre operanzi este scalar,
operaia nu este posibil.
2 x + 5 y = 3
Exemplul 12. Fie sistemul
S se rezolve prin 2 metode: cu solve i cu mprirea la
x y =2
stnga (X=[x ;y] ;i identificai matricile A i B
1.4.5. Ridicarea la putere
Operaia de ridicare la putere a unei matrice este simbolizat cu operatorul (^). Urmtoarea
instruciune: Z=X^p reprezint ridicarea la puterea p a matricei X. Expresia X^p are sens doar pentru X
matrice ptrat i p scalar.
Dac p este un ntreg pozitiv, ridicarea la putere este obinut prin nmuliri repetate:
Z = Xp= X * X*...* X
,Vp>0
iar dac p este un ntreg negativ, X este mai nti inversat i apoi se nmulesc inversele de p ori:
Z = Xp = inv(X) * inv(X)*...*inv(X)
,Vp<0
operaia
de
transpunere
returneaz
conjugata
transpusei,
Z(i,j)=conj(Y(j,i))=real(Y(j,i))-i*imag(Y(j,i))
Z(i,j) = conj(Y(j,i)) = real(Y(j,i))- i*imag(YG,i))
I.
adic:
CURS 2
zeros
ones
eye
rand
randn
CURS 2
linspace
logspace
meshgrid
1. GENERAREA VECTORILOR
1.1. Generarea vectorilor cu pas liniar
Generarea vectorilor cu pas liniar implic cunoaterea limitelor intervalului (amin i amax) i a pasului
dintre dou elemente (pas), sau numrul de elemente ale vectorului. Metoda de generare a vectorului se
alege funcie de datele de intrare.
-
Dac se cunosc limitele intervalului (amin i amax) i pasul (pas) dintre dou elemente, se
a max a min
rezultant x este: N =
+1
pas
unde [ ]" semnific partea ntreag a rezultatului expresiei dintre paranteze. Instruciunea presupune
c:
- dac pas > 0, atunci este necesar ca amin < amax,
- dac pas < 0, atunci este necesar ca amin > amax. Spre exemplu:
x= 2:5:25
x= -20:3:10
17
CURS 2
x= 5:-2:-4
x =-15:-3:-25
x = 5:15
sunt corecte, n timp ce urmtoarele instruciuni: x = 2:-l:5; x = -5:2:-10 sunt incorecte.
Dac pasul se omite, valoarea acestuia este considerat implicit egal cu unitatea.
-
Dac se cunosc limitele intervalului (amin i amax) i numrul de elemente (N) ale vectorului
x = linspace(amin, amax, N). Pasul dintre dou elemente rezult egal cu:
pas =
a max a min
N 1
Dac valoarea N este omis, atunci aceasta este considerat implicit egal cu 100. Valorile limitelor
intervalului, amin i amax, nu sunt supuse nici unei restricii si pot fi date n orice ordine (dac amin >
amax vectorul generat va fi ordonat descresctor).
Exemplul 15. S se genereze un vector cu pas liniar, cu limitele: amin =2.5, amax = 7 si pasul egal cu
1.25. Secvena:
3.7500
5,0000
6.2500]
Exemplul 16. S se genereze un vector cu pas liniar, cu limitele: amin = 2.5, amax = 7 i N = 4
elemente. Secvena:
4.0000
5.5000
7.0000 ]
Dei genereaz acelai numr de elemente, prima secven controleaz pasul i poate modifica eventual
limita superioar, iar a doua controleaz numrul de elemente si menine limitele impuse.
18
CURS 2
Exemplul 17. S se genereze un vector cu N=5 elemente distribuite logaritmic pe intervalul [10-2,102].
Secvena:
Exemplul 18. S se genereze un vector cu N=6 elemente distribuite logaritmic pe intervalul [10-2 , ].
Secvena:
0.0316
0.0997
0.3150
0.9948
3.1416].
Observaie. Cnd amax= , elementele vectorului sunt distribuite ntre amin i pi.
2. GENERAEA MATRICELOR
2.1. Matricea goal
Dei n MATLAB nu exist instruciuni pentru declararea tipurilor de variabile, iar matricele se
autodimensioneaz n timpul utilizrii, pentru a crete viteza de lucru se procedeaz la crearea unei
matrice goale. Acest lucru se face la nceputul sesiunii de lucru sau la apelarea unui program.
Declararea unei matrice goale se face cu instruciunea:
X = [] care asigneaz lui X matricea de dimensiuni 0x0.
Orice matrice goal trebuie sa aib cel puin una din dimensiuni zero. Pentru a testa dac o matrice X
19
CURS 2
1
1
U =
...
1 ... 1
1 ... 1
... ... ...
1 ... 1
U=ones(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funcia ones este apelat cu un singur argument
scalar, matricea generat este o matrice ptrat avnd dimensiunea argumentului. Apelat cu dou
argumente scalare (m,n), matricea generat are m linii i n coloane. Dac funcia ones are ca argument
o matrice A, matricea generat este o matrice unitate de aceleai dimensiuni cu matricea A.
Exemplul 19. S se genereze o matrice unitate cu dimensiunea matrice unitate cu dimensiunea 2x3. Cu
secvena:
Al=ones(2) A2=ones(2,3)
0
0
O=
...
0 ... 0
0 ... 0
... ... ...
0 ... 0
20
CURS 2
O= zeros(m,n)
O= zeros(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funcia zeros este apelat cu un singur argument
scalar, matricea generat este o matrice ptrat avnd dimensiunea argumentului. Apelat cu dou
argumente scalare (m,n), matricea generat are m linii si n coloane. Dac funcia zeros are ea argument
o matrice A, matricea generat este o matrice zero de aceleai dimensiuni-cu matricea A.
1
0
I =
...
0 ... 0
1 ... 0
... ... ...
0 ... 1
Se genereaz cu funcia eye, care se apeleaz cu una dintre sintaxele: I= eye(n); I= eye(m.n)
I= eye(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funcia eye este apelat cu un singur argument scalar,
matricea generat este o matrice ptrat avnd dimensiunea argumentului. Apelat cu dou argumente
scalare (m,n), matricea generat are m linii si n coloane. Dac funcia eye are ca argument o matrice A,
matricea generat este o matrice identitate de aceleai dimensiuni cu matricea A.
funcia rand pentru numere aleatoare cu distribuie uniform n intervalul (0.0, 1.0);
21
CURS 2
funcia randn pentru numere aleatoare cu distribuie normal (Gaussian), de medie zero i varian
Rn=randn(n)
Ru=rand(m,n)
Rn=randn(m,n)
Ru=rand(size(A))
Rn=randn(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funciile rand i randn sunt apelate cu un singur
argument scalar, matricea generat este o matrice ptrat avnd dimensiunea argumentului. Apelat cu
dou argumente scalare (m, n), matricea generat are m linii si n coloane. Dac funciile rand i randn
au ca argument o matrice A, matricea generat este o matrice aleatoare de aceleai dimensiuni cu
matricea A.
Pentru simularea experienelor care comport aceleai condiii se genereaz serii de numere aleatoare la
care se controleaz un parametru de iniializare al generatorului, seed. rand('seed') sau randn('seed') retumeaz valoarea curent a numrului seed"; rand('seed',n) sau randn('seed',n) - seteaz numrul
seed" la valoarea n.
[X, Y]=meshgrid(x)
i returneaz datele n tablourile X si Y, care sunt sunt copii ale vectorului x si ale vectorului y. Cu alte
cuvinte, funcia meshgrid returneaz n tablourile X i Y perechile de coordonate ale tuturor punctelor
22
CURS 2
Teme:
1) Se vor rula toae instruciunile i exemplele din cadrul cursului.
2) 1) Fie matricea:
A= 1
2
7
24
52
5
0
23