Sunteți pe pagina 1din 40

MATLAB

Matrix Laboratory Math Work Inc Pachet de programe de inalta performanta pentru calcul numeric si reprezentari grafice in domeniul stiintei si ingineriei Bibliografie: M. Ghinea, V Fireteanu. Mathlab. Calcul numeric-grafica-aplicatii Ed. Teora 2001

Resurse de calcul

Operatii matematice fundamentale Programare Algebra liniara si functii matriceale Analiza datelor si transformatelor Fourier Analiza numerica neliniara Reprezentarea graficelor 2D si 3D Vizualizarea graficelor Proprietati si resurse grafice Utilizarea interfetei grafice Import si export de documente

Realizare structurala

MATLAB este realizat sub forma unui nucleu de baza, cu interpretor propriu, in jurul caruia sunt construite Toolbox-uri Toolbox=o colectie extinsa de functii MATLAB care dezvolta mediul de programare, pentru a rezolva probleme din domenii variate

Toolbox-uri disponibile (selectie)

Signal Processing - pentru procesarea semnalelor si analiza seriilor temporale Image Processing pentru procesarea imaginilor si a semnalelor bidimensionale Neural Network pentru proiectarea si simularea retelelor neurale Statistics pentru analiza, modelarea si simularea datelor Spline aproximare si modelare folosind functii spline

Toolbox-uri disponibile (selectie) (Fereastra Matlab/View/Launch Pad/ Toolboxes)

Symbolic Math este un nucleu integrat, bazat pe pachetul MAPLE V, care cuprinde: - calcul simbolic pentru rezolvarea problemelor de algebra liniara si a ecuatiilor - simplificarea simbolica a expresiilor - evaluarea simbolica a functiilor speciale - accesul la nucleul MAPLE

Toolbox-uri disponibile (selectie)

Control System Design pentru analiza si proiectarea sistemelor automate de control Robust Control pentru sinteza sistemelor care trebuie sa functioneze in conditii de incertitudine System Identification pentru procesarea semnalului in vederea modelarii parametrice si analiza seriilor temporale Analysis and Synthesis pentru analiza si proiectarea sistemelor in prezenta incertitudinii

Lansarea in executie. Ferestrele de lucru


Fereastra Matlab Fereastra de comenzi (Command Window) * Spatiul de lucru (Workspace) * Fereastra de lansare (LaunchPad) * Fereastra Current Directory (arborele) * Fereastra Command History * Fereastra de editare (implicit este folosit editorul NotePad) ** Fereastra de reprezentari grafice *** * accesibile din Fereastra Matlab/View ** accesibile din Fereastra Matlab/New/ M-file *** accesibile din Fereastra Matlab/New/ Figure

Meniul Matlab/Start

Matlab Toolboxes Simulink Blocksets Desktop Tools Web Preferences Help Demos

Moduri de lucru in MATLAB (mediul de programare )

modul linie de comanda fiecare linie este prelucrata imediat si rezultatele sunt afisate (comenzile se introduc in Command Window) modul de lucru cu programe continute in fisiere. Fisierele ce contin instructiuni MATLAB se numesc fisiere M, deoarece au extensia .m (fisierele M pot apele alte fisiere M sau pot contine apeluri recursive)

Fisiere M

fisiere script contin o secventa de comenzi MATLAB . Nu permit integrarea in programe mari, construite pe principiul modularizarii. Sunt apelabile prin tastarea numelui lor. fisiere function pot lucra cu argumente. Pot fi apelate din alte functii Fisierele M sunt salvate implicit in subdirectorul Work, al directorului MATLAB utilizatorul poate extinde functionalitatea MATLAB pentru domeniul in care lucreaza, adaugand noi fisiere M.

Elementul de baza cu care lucreaza Matlab este matricea numerica rectangulara, cu elemente reale sau complexe

Matrice, vectori, scalari. Notatii


scalarii sunt asimilati cu o matrice 1X1 (o linie, o coloana) vectorii sunt asimilati cu o matrice linie (1Xn) sau coloana (nX1) elementele matricii A se identifica prin notatia A(k,l) Elementele unui vector V se identifica prin V(k) ATENTIE ! MATLAB foloseste notatia i si j pentru unitatea complexa (-1)1/2 . A nu se folosi i si j pentru notarea liniilor sau coloanelor unei matrici.

Variabile speciale si constante in MATLAB

ans variabila creata automat, in care se returneaza rezultatul unei expresii care nu a avut nici un nume eps variabila permanenta in care este memorata eroarea relativa pentru calcule in virgula mobila (implicit 2.2204e-016). pi i sau j unitatea complexa inf plus infinit (rezultatul impartirii 1.0/0.0) NaN Not a Number (rezultatul impartirii 0.0/0.0)

Variabile speciale si constante in MATLAB

nargin variabila pentru testarea numarului de argumente de intrare a unei functii nargout variabila pentru testarea numarului de argumente de iesire a unei functii realmax cea mai mare valoare pozitiva in virgula mobila (1.7977e+308) realmin- cea mai mica valoare pozitiva in virgula mobila (2.2251e-308)

Functii de control a variabilelor din memorie


clear X - sterge variabila X clear X Y Z - sterge variabilele X, Y, Z clear sterge toate variabilele disp X afiseaza X. X poate fi un sir de caractere(pus intre apostrofuri), sau o matrice pack compacteaza memoria clc sterge fereastra de comenzi

Importul si exportul de fisiere


load incarca date din fisierul matlab.mat load nume fisier[.ext] incarca date din fisierul specificat. Fisierul poate fi in format binar (in acest caz are extensia .mat) sau poate fi un fisier ASCII. Datele continute in fisierul incarcat se regasesc in memorie cu numele temp save nume_fisier nume_variabile format date - salveaza variabilele din zona de lucru, in fisierul specificat. Formatul poate fi ascii sau binar save salveaza toate variabilele din spatiul de lucru in fisierul matlab.mat

Definirea matricilor simple


introducerea explicita a listei de elemente. Elementele de pe o linie sunt separate prin spatiu sau virgula; liniile sunt separate prin punct si virgula. Elementele matricii se pun intre paranteze drepte. Ex: A=[1 2 3; 4 5 6; 7 8 9] Pentru matrici mari se pot desparti liniile prin <enter>

Definirea matricilor simple


Generare prin instructiuni sau functii zeros(m,n) genereaza matricea nula cu m linii, n coloane zeros(n)- matrice nula patratica, nxn ones(m,n) ones(n) - genereaza matricea nxn cu elemente egale cu 1 eye(m,n) matricea unitate. eye(n)=eye(n,n) Matricea goala. : X = [ ]. Z = isempty (X) testeaza daca o matrice este goala incarcare din fisiere de date externe

Definirea matricilor simple


creare de fisiere M (script sau function) Ex1 fisiere script: date.m contine [6 7 8; 9 5 3; 9 8 7] Apel la linia de comanda: >>date Ex2- fisiere function: date1.m contine function[v]=date1 v=[1 2 3; 4 5 6]; Apel: >>a=date1 >>b=a+date1

Definirea matricilor simple


Prin unirea mai multor matrici mici astfel incat matricea rezultata sa fie rectangulara EX: >>a1=[1 2 5; 3 4 9] >>a2=[5 6 ; 7 8] >>a=[a1,a2] (nr. linii a1=nr. linii a2) >>a3=[9 7 4] >>b=[a1;a3] (nr. de coloanea1=nr coloane a3]

Dimensiunile matricilor
size(A) returneaza un vector [nlinii, ncol] [x,y] = size(A) x=nlinii, y=ncol max(size(A)) min(size(A)) maximul si minimul dintre cele 2 dimensiuni ale matricilor length(V) lungimea unui sir u = ones(size(A))

Matricea cu numere aleatoare


rand(n), rand(m,n), rand(size(A)) matrice cu numere aleatoare cu distributie uniforma in intervalul (0.0,1.0) randn(n), randn(m,n), randn(size(A)) numere aleatoare cu distributie normala, de medie zero si varianta unu

Matricea cu numere aleatoare

a+rand(n) matrice patratica cu numere aleatoare cu distributie uniforma in intervalul (a, a+1) a*rand(n) matrice patratica cu numere aleatoare cu distributie uniforma in intervalul (0, a) a+(b-a)*rand(n) matrice patratica cu numere aleatoare cu distributie uniforma in intervalul ( a,b)

Construirea unor matrici speciale Folosirea functiei diag

X = diag(v) construieste o matrice X avand pe diagona principala elementele din vectorul v. Este echivalent cu X=diag(v,0) v = diag(X,k) pentru matricea X, returneaza un vector coloana care contine elementele de pe diagonala k a matricii X.

k=0 diagonala principala. k>0 diagonala k de deasupra diagonalei principale k<0 diagonala k de sub diagonala principala

v = diag(X) e echivalent cu v=diag(X,0) Obs. Daca X nu e matrice patratica, este luata in considerare cea mai mare matrice patratica ce sa poate forma pornind cu X(1,1)

Operatii
operaii dup regulile calculului matriceal operaii cu matrice + , - , * , / A/B=A*B-1, \ (A\B=A-1*B),^. (transpunere); operaii dup regulile calculului scalar operaii cu tablouri (element cu element). Sunt prefixate de simbolul punct .* , ./, .\, .^ C=A.*B C(k,l)=A(k,l)*B(k,l) pentru un scalar k=conjugatul lui k A. se transpune fiecare element O matrice cu numere complexe la transpunere conjuga elementele det(A) determinantul lui A rank(A) rangul matricei A

Elementele matricilor

A(5,8) A(1,: ) linia 1 A( :, 1) coloana 1 A(2:3, 1:2) submatrice T=A(2,: ) >4 matrice de test pentru elementele de pe linia 2, care sunt >4. Coloanele care satisfac cond. dau 1, celelalte dau 0 B=A( : , T ) acele coloane din A care satisfac conditia ca au pe a doua linie o val >4

Elementele matricilor si vectorilor


definirea doar a unui singur element al unui tablou initializeaza pe cele dinaintea lui, care sunt nedeclarate, cu 0 dimensiunea unui vector poate fi marita adaugadu-i un element, sau un vector: x = [x,5] y = [y; [-1;-2]] pt. vector coloana y=[y, [1,2]] pt. vector linie pt. y=[9 7 4] se obtine [9 7 4 1 2]

Generarea vectorilor.

cu pas liniar

V = vmin : pas :vmax rezulta N r= [(vmax vmin)/pas] + 1 V = linspace( Vmin, Vmax, Nr puncte) pas = (Vmax Vmin ) / (Nr-1) v = logspace( vmin, vmax, Nr) N r elemente distribuite logaritmic intre [10vmin, 10vmax].

cu pas logaritmic

Operatori relationali.

Care compara numai partea reala

< mai mic <= mai mic sau egal > mai mare >= mai mare sau egal == ~= identic diferit

Care compara si partea complexa


Comparatie scalar cu matrice (scalarul se extinde la dimensiunea matricei)

Operatori logici.
Simbol matlab Prioritate

nu si sau

&

2 3

Variabile de tip sir de caractere


sunt tablouri. v=info este echivalenta cu v = [i, n, f, o] char - creaza un vector de caractere (sir) pornind de la codurile numerice ale caracterelor: ex. char(34,23,78,6) double - converteste un sir intr-un vector al codurilor numerice ale fiecarui caracter. ex: double(jy34)

Redimensionarea matricilor

reshape(A,p,q) reaseaza elementele matricii A, considerate pe coloane, sub forma unei alte matrici cu p linii si q coloane. Daca notam [m,n]= size(A), este necesar ca m*n=p*q Elementele in noua matrice sunt asezate coloana dupa coloana

Redimensionarea matricilor
Exemplu V=1:8 A=reshape(V,4,2) A=A B=reshape(V,2,4) Matricile generate sunt

1 3 5 7 1 2 3 4 A ; B 2 4 6 8 5 6 7 8

Redimensionarea matricilor

flipud(A) simetrizeaza matricea A fata de axa sa de simetrie orizontala (updown) fliplr(A) - simetrizeaza matricea A fata de axa sa de simetrie verticala (left-right) rot90(A) roteste matricea A cu 90 fata de coltul dreapta sus in sens antiorar

Obtinerea diagonalei secundare a unei matrice


v=diag(rot90(A))

Functii matematice in MATLAB


abs(x) modul angle(x) argumentul numarului complex sqrt(x) radacina patrata real(x) partea reala imag(x) partea imaginara conj(x) conjugatul round(x) rotunjire la cel mai apropiat intreg

Functii matematice in MATLAB


fix(x) rotunjire spre zero fix([-0.9, 1.7, 0.2, -5.6])=[0, 1, 0, -5] floor(x) cel mai apropiat intreg <= x; floor([-0.9, 1.7, 0.2, -5.6])=[ -1, 1, 0, -6] partea reala si imaginara independent ceil(x) cel mai apropiat intreg >= x; ceil([-0.9, 1.7, 0.2, -5.6])=[ 0, 2, 1,-5] partea reala si imaginara independent sign(x) semnul lui x sign([-0.9,1.7,0, -5.6])=[-1, 1, 0, -1]

Functii matematice in MATLAB


rem(X,Y) = X- fix(X. /Y).*Y , pentru Y~=0 mod(X,Y) = X-floor(X./Y).*Y pentru Y~=0 u si v sunt congruente modulo m daca si numai daca mod(u,m) == mod(v,m) rem(X,0) = NaN rem(X,X) =0, pentru X~=0 rem(X,Y) pt. X~=Y si Y~=0 are acelasi semn ca X. mod(X,Y) for X~=Y and Y~=0 has the same sign as Y. rem(-11,5)=-1 ; rem(11,-5)= mod(-11,5)=4 ; mod(11,-5)= rem(X,Y) si mod(X,Y) sunt egale daca X si Y au acelasi semn dar difera daca X si Y au semne diferite. rem returneaza o valoare intre 0 si sign(X)*abs(Y).

Functii agregat

se aplica vectorilor si matricelor; daca argumentul este un vector rezultatul este un numar; daca argumentul este o matrice, functia se aplica fiecarei coloane, iar rezultatul este un vector linie. Exemplu: Daca A=[1,2,3] Atunci 1 2 3 B sum(A)=6 4 5 6 sum(B)=[5,7,9] sum(sum(B))=21 sum(A,2)=[6 15] Sum(A,2) se aplica liniilor lui A si rezultatul e un vector coloana

Sort

sorteaza elementele unui vector in ordine crescatoare. argumentele complexe sunt sortate crescator dupa modulul lor, iar valorile de modul identic se sorteaza crescator dupa unghi. Forma [y,L] = sort(x) returneaza in y matricea x sortata, iar L este o matrice de indici. Daca x este un vector, atunci y=x(L);

SORT
v=[9 -1 5 0 4] [w,k]=sort(v) u=v(k) a=[1, -9, 5; -3, 7, 9;10, 0, 7] [b,l]=sort(a) Returneaza w =[ -1 0 4 5 9] k =[ 2 4 5 3 1] u =[ -1 0 4 5 9] b =[ -3 -9 5; 1 0 7; 10 l =[ 2 1 1; 1 3 3; 3 2

7 9] 2]

S-ar putea să vă placă și