Sunteți pe pagina 1din 32

MATLAB

2009

Programe specializate pentru calcule matematice


Matematica MathCAD (medii de programare) Matlab Maple Octave Scilab

MATLAB (MATrix LABoratory) - pachet de programe de nalt performan, dedicat calculului numeric i reprezentrilor grafice n domeniul tiinei i ingineriei. - integreaz analiza numeric, calculul matriceal, procesarea semnalului i reprezentrile grafice Elementul de baz cu care opereaz MATLAB-ul este matricea

Resursele de calcul i reprezentare grafic ale MATLAB 1. Operaii matematice fundamentale: calcule cu liniar i tablouri; 2. Algebr matrice i funcii matriceale operatori relaionali i logici; analiza matriceal; 3. Analiza datelor i transformatele Fourier funcii trigonometrice i hiperbole, exponenial, logartmul etc; ecuaii liniare; corelaia, numeric diferene finite; 4. Analizcovarianta, neliniar Euler, funciile speciale: Fourier rapid (FFT) ; eliptic etc.; descompunerea n valori Bessel,i valori singulare; transformata Gamma, proprii ecuaii difereniale; 5. Programare calcule cu polinoame; factorizarea QR; mediana i deviaia standard; media statistic, integrarea numeric; IEEE (15 structuri de control; aritmetic n virgul mobil graficelorcifre i 3D zecimale n rezultat). 6. Reprezentarea generarea matricelor; interpolarea datelor. aproximarea trecerilor prin zero;2D ASCII sau binar; citirea/scrierea din/inliniilor, poligoanelor pline, liniilor de contur; folosirea pixelilor, fiiere algoritmi7. Vizualizarea graficelorformat pentru matrice rare. minimizarea. fiierelor program; depanarea diagramelor polare, de bare sau a histogramelor; utilizarea culorilor i a poziiei sursei de lumin; controlul 8. Proprieti i resurseinteractive crearea de interfeecoordonate liniare, (GUI). grafice grafice semilogaritmice i logaritmice; reprezentarea n vizualizri i manipularea figurilor; crearea volumetrice; grafice (Graphical User Interface - GUI) 9. Utilizareasuprafeelor. interfetei reprezentarea scalarea, etichetarea i colorarea axelor; afiarea imaginilor; desenarea, meniuri pentru bara superioar (pull-down) i meniuri crearea de 10. Suportul pentru imprimare animaie. desenarea i manipularea liniilor i textului. icoan (pop-up); imprimante alb-negru i color, 11. Schimbul de selectabile nivelul 1 i nivelul 2 Post Script; crearea de butoanedocumente prin apsare (push buttons), familia de imprimante de fiiere n/din format ASCII, binar sau importul i exportul HP LaserJet;dialog (check boxes) ji butoane radio (radio buttons), cutii de imprimante HP DeskJet, HP PaintJet; cursoare hexa; Epson cu 9 sau 24 pini. liniare imprimante (sliders); cutiitransmiterea de grafice n formatul standard META, jpg.....; de dialog cu texte editabile sau fixe; compatibilitate cu formatul Clipboard. utilizarea mouse-ului la detectarea unui eveniment sau a unei condiii impuse, sau pentru lansarea unei comenzi.

Cea mai important caracteristic a MATLAB-ului este uurina cu care poate fi extins. Prin aceasta, orice utilizator poate aduga propriile programe scrise n MATLAB la fiierele originale, dezvoltnd aplicaii specifice meniului n care lucreaz. MATLAB-ul include aplicatii specifice, numite TOOLBOX-uri Acestea sunt colecii extinse de funcii MATLAB (fiiere M) care dezvolt mediul de programare de la o versiune la alta, pentru a rezolva probleme din domenii variate structural, MATLAB-ul este realizat sub forma unui nucleu de baz, cu interpretor propriu, in jurul cruia sunt construite toolbox-urile.

Toolbox-uri importante: SIGNAL PROCESSING - recomandat pentru procesarea semnalelor i analiza seriilor temporale; IMAGE PROCESSING - este o colecie de funcii avansate pentru procesarea imaginilor si a semnalelor bidimensionale SYMBOLIC MATH - este un nucleu integrat, bazat pe pachetul software MAPLE V NEURAL NETWORK - pentru proiectarea i simularea reelelor neurale STATISTICS - este o colecie de funcii folosite pentru analiza, modelarea i simularea datelor SPLINE aproximeaz i modeleaz datele prin intermediul funciilor CONTROL SYSTEM DESIGN este utilizat pentru analiza i proiectarea sistemelor automate de control ROBUST CONTROL este un instrument pentru sinteza sistemelor care trebuie s funcioneze n prezena incertitudinii SYSTEM IDENTIFICATION este utilizat pentru procesarea semnalului n vederea modelrii parametrice, a identificrii sistemelor i a analizei seriilor temporale -ANALYSIS AND SYNTHESIS este recomandat pentru -sinteza i proiectarea sistemelor n prezena incertitudinii OPTIMISATION este o colecie de funcii pentru optimizarea liniar i neliniar

MATLAB-ul lucreaz cu mai multe tipuri de ferestre: o fereastr de comenzi, o fereastr pentru reprezentri grafice, istoricul comenzilor date, editorul de programe (notepad) Fiierul surs cu numele corespunztor i extensie .M se afla n directorul curent sau n unul din directoarele specificate n calea de cutare a MATLAB- ului

Exemplu: afiarea directorului de lucru: dir creerea unui fiier text se face cu ajutorul editorului notepad; fie acesta test.m lansarea lui n lucru: test.
Funcia "help" permite obinerea unor informaii cu caracter general despre comenzile interne i externe MATLAB. Ea poate fi apelat n mai multe forme: help - ofer informaii despre elementele limbajului MATLAB i a fiierelor .M din directorul curent. help <nume-funcie> - ofer informaii despre funcia n cauz.

Odat cu livrarea "toolbox"-urilor MATLAB, sunt ncorporate i o serie de fiiere .M cu meniuri demonstrative privind capabilitile diferitelor grupe particulare de funcii. Lansarea meniului demonstrativ se face cu comanda: demo

Variabile i spaiu de lucru Putem defini variabile de tip constant numeric, vector sau matrice, dndu-le nume diferite, desemnate att cu majuscule ct i cu minuscule ( MATLAB-ul este "casesensitive").

Operatori aritmetici, funcionali i relaionali Operatorii aritmetici de baza pentru lucrul cu expresii i masive sunt:

+ adunare; - scdere; * nmulire; / mprire dreapta; \ mprire stnga; ^ ridicare la putere;


mprirea / i \ este analog pentru expresii, dar provoac ieiri diferite n cadrul calculului matricial:

A\B este echivalent cu nmulirea la stnga cu inversa lui A (sau soluia ecuaiei A*X=B);
A/B este echivalent cu nmulirea la dreapta cu inversa lui A (sau soluia ecuaiei X*A=B);

Introducerea i manipularea vectorilor i matricilor Masivele (vectori i matrici) pot fi introduse n MATLAB astfel: 1. ca lista explicit de elemente; 2. construite cu ajutorul funciilor i instruciunilor specifice; 3. create cu ajutorul fiierelor .M; 4. ncrcate din fiiere externe. Cel mai simplu mod de introducere a matricilor este introducerea elementelor pe linie. Separatorul dintre linii este ; , iar ntregul masiv va fi cuprins ntre paranteze ptrate [...]: > A = [1 2 3; 4 5 6; 7 8 9]. >A(1,2) =2 Vectorii pot fi generai prin comenzi de forma: >x=1:5 care duce la generarea unui vector x=[1 2 3 4 5].

1. operatorul de transpunere ('). Comenzile: >A = [1 2 3; 4 5 6; 7 8 9] >B = A' vor determina ca B sa fie egal cu: B = [1 4 7; 2 5 8; 3 6 0] 2. radical. Comanda: >sqrt(A) extrage radicalul din fiecare element al masivului;

3. exponeniere. Comanda: >exp(A) realizeaz operaia de exponeniere fiecrui element al masivului;


4. logaritmare. Comanda: >log(A) determina obinerea logaritmului natural al elementelor lui A, iar comanda >log10(A) este varianta pentru logaritmare n baza 10;

5. expm(A) - este matricea exponeniala a lui A; 6. det(A) - determinantul matricii A; 7. trace(A)- urma matricii A; 8. inv(A) - inversa matricii A; 9. rank(A) - rangul matricii A; 10. size(A) - determina dimensiunea lui A; 11. length(A) - pentru argument vector, va returna lungimea sa;

Acestora li se mai adaug operatorii de cmp: .* ( nmulire cu punct) - are ca efect nmulirea a doua masive, de aceeai dimensiune, element cu element. Exemplificare: >x = [1 2 3]; y = [4 5 6]; >z = x .* y z = [4 10 18] ./ (mprire cu punct, la dreapta).; .\ (mprirea cu punct, la stnga). Exemplificare: >z = x .\ y; z = [4.0000 2.5000 2.0000] .^ (ridicarea la putere cu punct) - va ridica la puterea indicat fiecare element al unui masiv; Exista 6 operatori relaionali pentru compararea a 2 matrici de aceeai dimensiune; compararea se face pe perechi de elemente corespunztoare: < mai mic; <= mai mic sau egal; >= mai mare sau egal; == egal; ~= diferit; Aceti operatori sunt valabili i pentru variabilele de tip constant sau expresie.

Manipularea matricilor

rot90 - rotirea cu 90 grade; diag(A, k) - extrage elementele de pe diagonala k a unei matrici sau formeaz o matrice cu elementele desemnate n vectorul A plasate pe diagonala k tril(A) - reine elementele de sub diagonala principal, zerorizndu-le pe celelalte; triu(A) - reine elementele de deasupra diagonalei principale, zerorizndu-le pe celelalte. Operatori pe coloan acioneaz rnd pe rnd, asupra elementelor fiecrei coloane a unui masiv. Rezultatul este un vector linie: max(A) - determin elementul maxim pe fiecare coloan; min(A) - determin elementul minim pe fiecare coloan; mean(A) - determin valoarea medie pe fiecare coloan; median(A) - determin valoarea median pe fiecare coloan; sum(A) - suma elementelor pe coloan; prod(A) - produsul elementelor pe coloan; cumsum(A) - suma cumulativ a elementelor pe coloan; cumprod(A) - produsul cumulativ a elementelor pe coloan; std(A) - deviaia standard (sqrt(diag(cov(x))));
Observaie: Dac argumentul din funciile de mai sus este un vector, rezultatul este un scalar

Generarea matricilor utile se face folosind urmtoarele funcii : zeros(M, N) - genereaz o matrice nul cu M linii i N coloane (la matricile ptrate se poate omite numrul de coloane); ones(M, N) - genereaz o matrice cu elemente unitare; rand(M, N) - genereaz o matrice cu elemente aleatoare; eye(M, N) - genereaz o matrice identitate.

Testmat.m diary test clear load dat1 A=dat1

C= 19.0702 -7.8534 2.2521 3.3690 -12.4891 1.2489 2.9433

load dat2 B=dat2

C=A*B

dat1 1.0063 -1.9970 1.0002 0 0 0 0 0.0142 1.0164 -1.9970 1.0002 0 0 0 0.0223 0.03224 1.0164 -1.9970 -1.0002 0 0 0.0304 0.0487 0.0324 1.0164 -1.9966 1.0002 0 0.0385 0.0649 0.0487 0.0324 1.0164 -1.9966 1.0002 0.0568 0.1135 0.1135 0.1135 0.1135 0.1135 0.0568 0.1958 0.3406 0.2774 0.2043 0.1362 0.0681 0.0085

dat2 12 -2 3 0 1 5 -4

Invmat.m diary test clear load dat1 A=dat1

C=inv(A)

Comenzi speciale Faciliteaz lucrul n cadrul sesiunii de lucru : clear X - terge variabila X din spaiul de lucru; clear - terge toate variabilele din spaiul de lucru; clc - terge ecranul de comanda; ... - semnul de continuare a unei instruciuni pe a doua linie; % - plasat la nceputul liniei, desemneaz o linie de tip comentariu; disp - afiarea datelor i mesajelor sub forma : disp(A) - afieaz matricea A; disp('mesaj') - afieaz mesaj.

Grafica n coordonate rectangulare


Dac y este un vector, comanda: plot(y) produce afiarea elementelor lui y n funcie de indexul elementelor. Acestei comenzi de desenare simpl i se pot adaug: inscriptionarea unui titlu; etichetarea axelor; trasarea verticalelor i orizontalelor n dreptul fiecrei diviziuni de pe axe;

Exemplu: y = [0 48 84 1 91 6 14]; plot(y); title('Primul desen'), xlabel('Abscisa'), ylabel('Ordonata'), grid Dac x i y sunt vectori de aceeai lungime, comanda: plot(x,y) deseneaz elementele lui y funcie de elementele lui x.

GRAFIC.M x1=[0 0.649999 0.65 1.85 3.049999 3.05 4.90 6.749999 6.75 8.25] P1=[0 2.6 3.205 3.23 3.47 3.62 3.54] P2=[0 2.53 3.00 3.18 3.27 3.47 3.64] P3=[0 2.82 2.98 3.13 3.37 3.58 3.62] P4=[0 3.12 3.20 3.32 3.37 3.53 3.50] M1=[0 247.5 -50.5 502.9 -118 717.8 211] M2=[0 248.6 -181.6 627.5 -80.5 988.4 258.6] M3=[0 136.1 -29 542.4 -72.6 686.1 194.1] M4=[0 163.9 -75.2 485.4 -82.6 604 189.8] Q1=[0 212 -349 190 657.5 -770 56.2 898 -669 0] Q2=[0 269.6 -291.4 196.7 663.9 -763.1 -37.4 890 -677.6 0] Q3=[0 289.9 -271.8 180.9 678.2 -749.3 224 868.3 -698.7 0] Q4=[0 228 -333.6 178.5 684.6 -742.8 42.3 917.3 -650 0] grid on axes=[0,8.75,0,4] plot (x1,Q1,'m', x1,Q2,'b', x1,Q3,'c', x1,Q4,'g')

diary test x = [1 2 3] y = [2 3 4 5] z = [6,7,9,10;8,10,12,20;9,11,18,22]

subplot(221); mesh (x,y,z) grid title ('Reprezentare f(x,y)')

Fiiere de comenzi indirecte ("script files")

.m

Fiiere funcii
Dac un fiier.M specific o funcie, atunci prima linie trebuie s conin cuvntul function. Un fiier funcie se deisebete de un fiier document prin faptul c el poate s transfere argumente cu spaiul de lucru, iar variabilele definite n interiorul su sunt locale, neopernd global asupra spaiului de lucru. Exemplu: Funcia MEAN ce calculeaz valoarea medie, pe coloane, ntr-o matrice: function y=mean(x) % MEAN calculeaz valoarea medie a unui vector sau media, pe % coloane, intr-o matrice; in ultimul caz va returna un vector linie [m,n]=size(x); if m==1 m=n % izolam cazul vector linie end y=sum(x)/m; Exemplu de apel: >z=1:99; >mean(z) >ans=50

Funcii grafice n MATLAB


Grafica n coordonate rectangulare plot(y) unde: y este un vector

produce afiarea elementelor lui y n funcie de indexul elementelor inscriptionarea unui titlu; etichetarea axelor; trasarea verticalelor i orizontalelor n dreptul fiecrei diviziuni de pe axe; Exemplu: y = [0 48 84 1 91 6 14]; plot(y); title('Primul desen'), xlabel('Abscisa'), ylabel('Ordonata'), grid Dac x i y sunt vectori de aceeai lungime, comanda: plot(x,y) deseneaz elementele lui y funcie de elementele lui x. Exemplu: t = 0:0.05:4*pi; y = sin(t); plot(t,y) solid intrerupt(dashed) doua puncte(dotted) linie-punct(dashdot) punct(point) plus stea(star) cerc(circle) x-mark 'w' (white), 'g' (green), -: -. . + * o x

'r' (red), 'b' (blue).

Suprafee mesh 3-D i grafice de tip contur

mesh(Z)

unde Z - matrice

Controlul ecranului
subplot(m,n,p) - subdivizeaz ecranul grafic; parametrii m, n, p au urmtoarea semnificaie: m reprezint numrul de grafice pe linie; n reprezint numrul de grafice pe coloan; p reprezint poziia primului grafic inscripionat n partiia ecran realizat; Exemplu: subplot(2, 1, 1), plot(abs([2 -7 3 5 17 -25])) subplot(2, 1, 2), plot(rand(1,10));

scalare manuala

v = [x_min, x_max, y_min, y_max]; axis(v)

Introducerea datelor de intrare

input

ex: X=input (Introduceti val. X = )

Afisarea datelor calculate si mesajelor

disp

ex: disp (Expresia E(x) nu se poate calcula ) disp ([E(x) = ,num2str(E)]) disp (E)

Structuri pentru controlul execuiei comenzilor Instruciunea IF


Instruciunea IF este folosit pentru luarea unei decizii multiple. Forma sa general este: if condiie-1 instruciuni-1 elseif condiie-2 instruciuni-2 ................. else instruciuni-rest end iar forma cea mai simpl: if condiie instruciuni end

n general condiia apare sub forma: expresie operator-relaional expresie unde operatorul relaional poate fi: <, <=, >, >=, ==, ~=.

Bucla for
Forma general a unei bucle for este: for variabila=start : pas : final instruciuni end
unde: variabila reprezint variabila de contorizare a buclei; start reprezint valoarea atribuit iniial variabilei de contorizare; pas reprezint pasul de incrementare al variabilei de contorizare; final reprezint valoarea final atribuit variabilei de contorizare; instruciuni reprezint o succesiune de una sau mai multe comenzi MATLAB; end marcheaz sfritul buclei for.

Dac instruciunile sunt urmate de caracterul ";" se inhib afiarea rezultatelor intermediare din bucla for

n=10; for i=1:n x(i)=i^2; end;

m=6; n=8; for i=1:m for j=1:n A(i,j)=1/(i+j-1); end end A

Bucla WHILE
Aceasta permite ca o instruciune sau un grup de instruciuni s fie repetat de un numr neprecizat de ori n funcie de o condiie logic. Forma sa general este: while condiie instruciuni end

S se determine primul numr ntreg n, pentru care factorialul (n!) este un numr de 5 cifre: n=1; while prod(1:n)<1.e4 n=n+1; end n
Bucla va fi executat att timp ct condiia (n!<1.e4) este ndeplinit

Ori de cte ori este posibil, n vederea obinerii vitezei maxime de lucru sub MATLAB, se ncearc transformarea buclelor for i while n operaii matriciale Exemplu: Secvena de mai jos poate fi transformat astfel:

i=0; for t=0:0.01:10 i=i+1; y(i)=sin(t); end

t=0:0.01:10; y=sin(t);

Instruciunea BREAK
determin ieirea forat dintr-o bucl for, while sau dintr-un if

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