Documente Academic
Documente Profesional
Documente Cultură
MATLAB
The Language of Technical
Computing
matrici/vectori/scalari
operatori relationali si logici
instructiuni de control
Baza structurilor de date - Matricea
Matlab-ul lucreaza numai cu un singur tip de obiecte
MATRICEA numerica rectangulara cu elemente reale
sau complexe, sau orice expresie Matlab.
Anm se acceseaza prin A(n,m) - elementele unei
matrici, elementul de la intersectia liniei n cu
coloana m.
Dimensiunea matricei e data de perechea (n x m).
Indicii incep de la valoarea 1.
Vectorii sunt asimilati :
vector linie – matrice cu o linie (1 x n)
vector coloana – matrice cu o coloana (n x 1).
v(k) – elementul de pe pozitia k din vector
Scalarii sunt asimilati matricilor cu o singura linie si o
singura coloana (1x 1).
Definirea matricilor
A= [1 2; 3 4]+i[5 6; 7 8] sau
A= [1+5i 2+6i; 3+7i 4+8i ]
Cu pas logaritmic
v = logspace( vmin, vmax, nr_puncte)
nr de elemente sunt distribuite logaritmic intre
[10vmin, 10vmax].
Accesarea elementelor. Operatorul :
>> xige
Accesarea elementelor
A = diag(5:-1:1)
A= 6 0 1 0 1
1 4 1 0 1
1 0 4 0 1
0 0 0 2 0
0 0 0 0 1
Operatii matriceale
Adunarea A+ B
Scaderea A– B
Inmultirea A* B
Impartirea la dreapta A/B este echivalent cu A⋅B-1,
daca B este o matrice patratica inversabila
Impartirea la stânga A\B este echivalent cu A-1⋅B, daca
A este o matrice patratica inversabilă,
Ridicarea la putere A^B, A este matrice patratica si B
scalar sau invers, insa A si B nu pot fi simultan matrice
Transpunerea A' = AT
Operatii cu tablouri
Desfasurate dupa regulile calculului scalar, intre elemente
situate pe aceeasi pozitie. Cu exceptia operatiei de
transpunere, pentru celelalte operatii operanzii trebuie sa
aibe aceleasi dimensiuni sau unul dintre operanzi sa fie
scalar .
4 5 2
3 2 0
2 2 5
[n,m] = size(A) – returneaza dimensiunea matricei A:
n- nr de linii si m- nr de coloane
det(A) – returneaza determinantul matricei patratice A
rank(A) – returneaza rangul matricei A
inv(A) – returneaza inversa matricei patratice inversibile
A (inversa unei matrici se calculeaza si asa A^ (-1))
diag(A) – returneaza diagonala principala a matricei A.
conj(A) – returneaza conjugata matricei complexe A
Cateva functii Matlab pentru calcul vectorial
norm(v,p) – returneaza norma p a vectorului v
norm(v)- returneaza norma euclidiana(p=2) a vectorului
dot(v,w) – returneaza produsul scalar al vectorilor de
aceeasi lungime v si w. < u w >= |u| |w| * cos α
;
cross(v,w) – returneaza produsulvectorial al vectorilor v
si w, ( au cate 3 elemente)
sum(v) – returneaza suma elementelor vectorului v
length(v) – returneaza lungimea vectorului v, adica
numarul de elemente
Functii Matlab opereaza pe vectori
Aceste functii opereaza pe vectori (linie sau coloana).
Aplicate pe o matrice (m x n) - matricea interpretata in
maniera coloana x coloana - rezultatul fiind un vector
linie
max, min, sort, sum prod, median, mean, std, any,all
Interpretare linie x linie se obtine folosind transpusa:
exemplu: mean(A')'.
Operatori relationali
0 0 0 0 1 0
1 0 0 1 0 1
0 1 0 1 1 1
1 1 1 1 0 0
Ordinea operatiilor
() % paranteze
‘ ^ % transpusa si ridicare la putere
~ % negatia
* /\ % inmultirea si impartirea
+- % adunarea si scaderea
: % range
< % operatorii relationali
&& % and
|| % or
Operatori relationali si logici
Utilizati la crearea expresiilor logice
Ca date de intrare sunt acceptate doar datele numerice:
-valoarea logica „adevrat” (A) - orice numar diferit de 0
-valoarea logica “fals” (F) - valoarea 0
Datele de iesire nu pot fi decat numerele 1 sau 0,
interpretate ca fiind valorile logice A, respectiv F.
Operatorii relationali pot fi folositi pentru a compara:
tic
A = zeros(2000, 2000);
for ii = 1:size(A,1)
for jj = 1:size(A,2)
A(ii,jj) = ii + jj;
end
end
toc % Elapsed time is 2.261 seconds
Instructiunea while
Utilizata pentru repetarea unui set de instructiuni atat timp
cat o conditie specificata este adevarata.
while expresie
grup de instructiuni
end
Exista posibilitatea ca pentru o conditie data sa se cicleze
la infinit. Pentru a evita acest lucru este bine sa
introduceti un numar maxim de iteratii:
it=1;
itmax=1000;
while conditie & (it<itmax)
grup de instructiuni;
it=it+1;
end
Instructiunea while
Exemplu:ghicesc numarul
function[]=ghici(nr)
zic = input(‘Introduceti un nr mai mic ca 10: ’)
if (zic == nr)
disp(‘Felicitari!’)
end
end % trebuie sa rulez de mai multe ori functia
function[]=ghici(nr)
zic = input(‘Introduceti un nr mai mic ca 10: ’)
while (zic ~= nr)
zic = input(‘Introduceti un nr mai mic ca 10: ’)
end
disp(‘Felicitari!’)
end
Instructiunea while
function[s]=suma(v)
s=0;
k=1;
l=length(v);
while (v(k)>0)&(k<=l)
s=s+v(k);
k=k+1;
end
end
Instructiunea break
Iesirea fortata dintr-o bucla, inainte de terminarea ei, da
controlul primei comenzi de dupa end-ul buclei - pentru
ciclurile for sau while
Se recomanda a fi utilizata daca o conditie de eroare a fost
detectata
In cazul unor cicluri imbricate comanda iesirea din ciclul
cel mai interior
Exemplu: x = [1 12 NaN 7 8]
>> for ind=1:length(x)
if x(ind)==NaN
break
end
x(ind)=rem(x(ind-1),5);
end
>> x
Instructiunea break
Iesirea fortata dintr-o bucla, inainte de terminarea ei, da
controlul primei comenzi de dupa end-ul buclei - pentru
ciclurile for sau while
Se recomanda a fi utilizata daca o conditie de eroare a fost
detectata
In cazul unor cicluri imbricate comanda iesirea din ciclul
cel mai interior
Exemplu: inlocuiesc elementele vectorului cu restul
impartirii lor la 5 .
>>x = [1 12 NaN 7 8]
>> for ind=1:length(x)
if x(ind)==NaN
breakend
x(ind)=rem(x(ind),5) end
>> x
Exemple
function p=fbreak(v)
% iese fortat din ciclul la intalnirea unui 0 in vector
%daca nu exista elemente nule, treturneaza produsul lor
n=length(v);
p=1;
for k=1:n
if v(k)==0
disp('elemente nule')
break
else
p=p*v(k);
end
end
Exemple
s = 0;
for k = 3:50
s = s + k^2/exp(k);
end
s
a = 1:1000; b = 1000 - a;
psum=0;
for n=1:1000 %solutie proasta
psum = psum +a(n)*b(n);
end
M files
- ruleaza foarte rapid functiile Built -In in MATLAB
%Apelez functia
mexCallMATLAB(1,&rezultat,2,arg,"conv");
%Apelez functia
mexCallMATLAB(1,&rezultat,2,arg,"conv");
mxDuplicateArray
mexErrMsgTxt
mxMalloc
mxRealloc
mxCreateString
mxDestroyArray
mxFree
mxGetCell
mxGetData
…..
Bibliografie
Stormy Attaway, Matlab, A Practical Introduction to
Programming and Problem Solving, 3rd Edition, 2013 Elsevier
Inc.
Calcul numeric-grafica-aplicatii M. Ghinea, V Fireteanu.
Mathlab. Ed. Teora 2001
http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf
http://www.mathworks.com/academia/student_center/tutorials/la
unchpad.html
Documentatie Octave in format HTML
https://www.gnu.org/software/octave/doc/interpreter/
Bibliografie
Stormy Attaway, Matlab, A Practical Introduction to
Programming and Problem Solving, 3rd Edition, 2013 Elsevier
Inc.
Instructiuni Conditionate
Sumarul de la pagina 136
Exercitiile din capitolul 4 : 1, 6, 10, 16, 27, 30, 31
Bucle
Sumarul de la paina 183
Exercitiile din capitolul 5 : 1, 6, 7, 8, 9, 13, 40
Exercitiile din capitolul 10 : 1, 2, 6, 7