Sunteți pe pagina 1din 122

APLICAII MATLAB

1.

PREZENTARE GENERAL

MATLAB = Limbaj de nalt performan pentru proiectarea asistat de calculator MATLAB este n acelai timp un limbaj de programare i un sistem de dezvoltare care integreaz calculul, vizualizarea i programarea ntr-un mediu uor de utilizat (easy-to-use), problemele i soluiile acestor probleme fiind exprimate ntr-un limbaj matematic accesibil.

Domenii de utilizare: Matematic i calcul numeric Dezvoltarea algoritmilor Modelare, simulare i testarea prototipurilor Analiza i vizualizarea datelor Grafica inginereasc i din tiinele aplicate Dezvoltarea de aplicaii, inclusiv GUI

MATLAB = sistem interactiv care are ca element de baz tabloul, matricea, ceea ce permite rezolvarea problemelor de calcul numeric, n special cele care necesit prelucrarea de vectori sau matrici.

Numele MATLAB provine de la Matrix laboratory Firma productoare este The MathWorks, Inc., SUA

MATLAB-ul a evoluat: n mediul universitar unde este pachetul standard pentru cursurile introductive i avansate de matematic, inginerie i tiine n industrie, unde este utilizat pentru cercetarea de nalt randament, dezvoltare i producie

MATLAB permite dezvoltarea unei familii de aplicaii sub forma toolbox-urilor. Aceste toolbox-uri permit nvarea i aplicarea tehnologiilor specializate din diverse domenii. Sunt disponibile toolbox-uri pentru domenii cum ar fi: procesarea numeric a semnalelor, sisteme de conducere automat, reele neurale, logic fuzzy, wavelet, simulare (SIMULINK), identificare etc.

Sistemul MATLAB const n cinci pri principale:

Limbajul MATLAB Mediul de lucru MATLAB Handle Graphics Biblioteca de funcii matematice a MATLAB-ului Interfaa de aplicaii program a MATLAB-ului (API)

Limbajul MATLAB: Reprezint un limbaj de nivel nalt de tip matrice/tablou cu instruciuni de control al salturilor, funcii, structuri de date, intrri/ieiri i cu proprieti de programare orientat pe obiecte. Facilitile de programare sunt organizate pe 6 directoare:

ops Operators and special characters.LangProgramming language constructs.StrfunCharacter strings.IofunFile input/output.TimefunTime and dates.DatatypesData types and structures. Mediul de lucru MATLAB: Reprezint un set de faciliti care permit manevrarea variabilelor n spaiul de lucru, importul i exportul de date, dezvoltarea, manipularea, editarea i depanarea fiierelor MATLAB (.m) i a aplicaiilor MATLAB. Aceste faciliti sunt organizate n directorul:

general General purpose commands. Handle Graphics: Reprezint sistemul grafic al MATLAB-ului. Cuprinde comenzi de nalt nivel pentru vizualizarea datelor bi i tri-dimensionale, procesarea imaginilor, animaie, prezentri de grafice. Permite de asemenea utilizarea unor comenzi de nivel sczut pentru crearea unor interfee grafice GUI. Funciile grafice sunt organizate n 5 directoare: graph2d

Two-dimensional graphs.Graph3dThree-dimensional graphs.SpecgraphSpecialized graphs.GraphicsHandle Graphics.UitoolsGraphical user interface tools.Biblioteca de funcii matematice a MATLAB-ului: Reprezint o colecie complex de algoritmi de calcul pornind de la funcii elementare (sinus, cosinus etc.) pn la funcii sofisticate (inversarea de matrice, valori proprii, funcii Bessel, FFT etc.). Funciile matematice sunt organizate n 8 directoare:

elmat Elementary matrices and matrix manipulation.ElfunElementary math functions.SpecfunSpecialized math functions.MatfunMatrix functions numerical linear algebra.DatafunData analysis and Fourier transforms.PolyfunInterpolation and polynomials.FunfunFunction functions and ODE solvers.SparfunSparse matrices. Interfaa de aplicaii program a MATLAB-ului (API) este o bibliotec care permite scrierea de programe n C sau Fortran care interacioneaz cu MATLAB-ul. Include faciliti pentru apelarea rutinelor din MATLAB, apelarea MATLAB-ului ca main de calcul, scrierea i citirea fiierelor de tip .MAT . Pachetul SIMULINK SIMULINK este un pachet software ataat MATLAB-ului i reprezint un sistem interactiv pentru simularea dinamicii sistemelor neliniare (bineneles i a celor liniare). Este conceput sub forma unei interfee grafice care permite crearea unui model prin trasarea schemei bloc a sistemului i apoi simularea dinamicii sistemului. SIMULINK poate lucra cu sisteme liniare, neliniare, continue, discrete, multivariabile etc. SIMULINK bebeficiaz de aa-numitele Blockset-uri care sunt de fapt biblioteci suplimentare care conin aplicaii specializate din domenii cum ar fi: comunicaii, procesarea semnalelor etc. Real-time Workshop este un program foarte important care permite generarea unui cod C pentru schemele bloc create n SIMULINK i prin urmare permite rularea de aplicaii n timp real de o mare diversitate.

Toolbox-urile MATLAB Toolbox-urile reprezint o familie de aplicaii care permit nvarea i aplicarea tehnologiilor specializate din diverse domenii. Aceste toolbox-uri sunt colecii de funcii MATLAB (functions) (Mfiles) care extind mediul MATLAB pentru rezolvarea unor clase particulare de probleme. Cteva din cele mai utilizate aplicaii sunt prezentate n figura urmtoare.

2.

FUNDAMENTELE PROGRAMRII N MATLAB

2.1.

Expresii fundamentale

MATLAB-ul lucreaz cu expresii matematice ca i celelalte limbaje de programare, dar spre deosebire de majoritatea acestor limbaje, aceste expresii implic la scar larg lucrul cu matrici. Expresiile sunt alctuite cu ajutorul urmtoarelor tipuri: Variabile Numere Operatori Funcii

Variabile MATLAB-ul nu necesit declararea dimensiunii variabilelor, deoarece la ntlnirea unui nou nume de variabil genereaz automat variabila respectiv i aloc spaiul necesar de memorie. Numele unei variabile este o liter, urmat de un numr orict de mare de litere, cifre sau simboluri. Din acest numr orict de mare sunt oprite primele 31 de caractere. MATLAB-ul este case sensitive - face distincie ntre literele mici i cele mari. Exemplu:

a = 30 creeaz o matrice 1 x 1 cu numele a i stocheaz valoarea acesteia 30 ntr-o singur locaie corespunztoare singurului element al matricei.

Numere MATLAB-ul utilizeaz notaia zecimal, cu punct zecimal opional i cu semn + sau -. Se utilizeaz i notaia tiinific cu litera e pentru a specifica o putere a lui 10. Reprezentarea numerelor imaginare este realizat cu litera i sau j ca sufix. Exemple: 3 -99 0.0001 1.60210e-20 6.02252e23

9.6397238

1i

-3.14159j

3e5i

Toate numerele sunt stocate intern utiliznd formatul long specificat de standardul IEEE n virgul mobil (precizie de 16 zecimale semnificative n domeniul 10-308 la 10+308).

Operatori Expresiile utilizeaz operatori aritmetici uzuali: + Adunare-Scdere*Multiplicare/mprire\mprire la stnga^Ridicarea la o putere'Transpusa complex conjugat( )Operatorul de specificare a ordinii de evaluare Funcii MATLAB-ul furnizeaz un mare numr de funcii matematice elementare standard (abs, sqrt, exp, sin ). Exist i funcii matematice avansate (funcii Bessel, gama etc.), multe dintre acestea acceptnd argumente complexe. Pentru vizualizarea funciilor elementare se poate tasta:

help elfun

Pentru a vedea lista funciilor avansate se poate tasta:

help specfun help elmat

O parte din funcii (cum ar fi sqrt, sin)sunt de tip built-in, adic sunt o parte a nucleului MATLAB, au o mare eficien, dar detaliile constructive nu sunt accesibile utilizatorului. Alte funcii sunt implementate ca fiiere MATLAB (M-files) i pot fi chiar modificate. Cteva funcii furnizeaz valorile unor constante universale:

pi 3.14159265IImaginary unit, -1 JSame as IEps Floating-point relative precision, 2-52RealminSmallest floating-point number, 2-1022RealmaxLargest floating-point number, 21023 InfInfinityNaNNot-a-number Numele funciilor nu sunt rezervate i deci este posibil suprascrierea lor.

Exemplu: eps = 1.e-6 Funcia original este reconstituit prin comanda: clear eps

Expresii Exemple de expresii i rezultatele corespunztoare ale evalurii acestor expresii:

rho = (1+sqrt(5))/2 rho = 1.6180

a = abs(3+4i) a= 5

z = sqrt(besselk(4/3,rho-i)) z= 0.3730+ 0.3214i

huge = exp(log(realmax))

huge = 1.7977e+308

toobig = pi*huge toobig = Inf

2.2.

Help on-line, formatul datelor, opiuni de salvare

Help on-line Pentru rularea MATLAB pe un PC trebuie pur i simplu executat un dublu click cu mouse-ul pe icon-ul MATLAB. Dac sistemul de operare nu este de tip Windows (este de tip UNIX) trebuie tastat matlab dup prompter-ul sistemului de operare.

o Limbajul MATLAB este mult mai simplu de nvat dac se renun la inspectarea arid a listelor cu variabile, funcii i operatori i se utilizeaz n schimb comenzile help, helpdesk, demo tastate direct de la prompterul MATLAB. o Pentru aflarea tuturor informaiilor utile despre o comand sau o funcie se tasteaz help urmat de numele comenzii sau funciei respective. o Pachetul MATLAB dispune de asemenea de informaii complete despre utilizare sub forma unei documentaii tip .pdf. o n cazuri particulare se poate apela la INTERNET, existnd o legtur la pagina Web a firmei productoare. o Alte comenzi utile pentru aflarea de informaii sunt: helpwin, lookfor, help help.

Exemple sugestive de utilizare a comenzii help:

help sin

SIN Sine. SIN(X) is the sine of the elements of X.

Overloaded methods help sym/sin.m

help exp

EXP Exponential. EXP(X) is the exponential of the elements of X, e to the X. For complex Z=X+i*Y, EXP(Z) = EXP(X)*(COS(Y)+i*SIN(Y)).

See also LOG, LOG10, EXPM, EXPINT.

Overloaded methods help sym/exp.m help demtseries/exp.m

help plot

PLOT Linear plot.

PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the vector is plotted versus the rows or columns of the matrix, whichever line up. If X is a scalar and Y is a vector, length(Y) disconnected points are plotted. PLOT(Y) plots the columns of Y versus their index. If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)). In all other uses of PLOT, the imaginary part is ignored. Various line types, plot symbols and colors may be obtained with PLOT(X,Y,S) where S is a character string made from one element from any or all the following 3 colunms:

y m c r g b w k

yellow magenta cyan red green blue white black ^ < > p h

point o circle

- solid : dotted -. dashdot -- dashed

x + * s d v

x-mark plus star square diamond

triangle (down)

triangle (up) triangle (left) triangle (right) pentagram hexagram

For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus at each data point; PLOT(X,Y,'bd') plots blue diamond at each data point but does not draw any line. PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by the (X,Y,S) triples, where the X's and Y's are vectors or matrices and the S's are strings. For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a solid yellow line interpolating green circles at the data points. The PLOT command, if no color is specified, makes automatic use of the colors specified by the axes ColorOrder property. The default ColorOrder is listed in the table above for color systems where the default is yellow for one line, and for multiple lines, to cycle through the first six colors in the table. For monochrome systems, PLOT cycles over the axes LineStyleOrder property. PLOT returns a column vector of handles to LINE objects, one handle per line. The X,Y pairs, or X,Y,S triples, can be followed by parameter/value pairs to specify additional properties of the lines. See also SEMILOGX, SEMILOGY, LOGLOG, GRID, CLF, CLC, TITLE, XLABEL, YLABEL, AXIS, AXES, HOLD, COLORDEF, LEGEND, and SUBPLOT.

Formatul datelor MATLAB-ul afieaz numerele cu 5 zecimale (setare implicit). Aceast setare se poate modifica cu ajutorul comenzii format:

FORMAT Set output format. All computations in MATLAB are done in double precision. FORMAT may be used to switch between different output display formats as follows: FORMAT Default. Same as SHORT.

FORMAT SHORT Scaled fixed point format with 5 digits. FORMAT LONG Scaled fixed point format with 15 digits. FORMAT SHORT E Floating point format with 5 digits. FORMAT LONG E Floating point format with 15 digits. FORMAT SHORT G Best of fixed or floating point format with 5 digits. FORMAT LONG G Best of fixed or floating point format with 15 digits. FORMAT HEX FORMAT + Hexadecimal format. The symbols +, - and blank are printed

for positive, negative and zero elements. Imaginary parts are ignored. FORMAT BANK Fixed format for dollars and cents. FORMAT RAT Spacing: FORMAT COMPACT Suppress extra line-feeds. FORMAT LOOSE Puts the extra line-feeds back in. Approximation by ratio of small integers.

Exemple:

c=1.333456789233 c= 1.3335

format long c c= 1.33345678923300

format short e c c= 1.3335e+000

format long e c c= 1.333456789233000e+000

format c c= 1.3335

Opiuni de salvare Pentru salvarea variabilelor curente cu care se lucreaz n MATLAB la ncheierea unei sesiuni de lucru se poate utiliza comanda save.

Aceast comand va salva toate variabilele curente generate de ctre utilizator ntr-un fiier numit matlab.mat . Dac se dorete se poate da un nume fiierului de date n care se salveaz variabilele.

Exemplu:

save date c determ A

realizeaz salvarea datelor c, determ i A ntr-un fiier date.mat .

Pentru restituirea variabilelor ntr-o sesiune de lucru ulterioar se folosete comanda load. Exemplu:

load date

Dac se dorete aflarea variabilelor curente se pot utiliza comenzile who,whos:

who Your variables are:

determ

whos Name Size Bytes Class

A c determ

2x2 1x1 1x1

32 double array 8 double array 8 double array

Grand total is 6 elements using 48 bytes

Pentru tergerea tuturor variabilelor curente din memoria de lucru se poate utiliza comanda clear.

2.3.

Crearea fiierelor MATLAB (.m files)

Deoarece este mult mai comod i util dect introducerea comenzilor linie dup linie la prompterul MATLAB, se lucreaz cu fiiere text care conin aceste linii program cu comenzile necesare. Aceste fiiere conin cod n limbajul MATLAB i sunt denumite .m files (sau M-files). Fiierele se creeaz utiliznd un editor de text i apoi se utilizeaz ca o comand MATLAB obinuit. Sunt dou tipuri de fiiere .m: Fiiere Script, care nu accept argumente de intrare i nu returneaz argumente de ieire. Aceste fiiere opereaz cu datele din spaiul de lucru. Rutine (funcii), care accept argumente de intrare i returneaz argumente de ieire. Variabilele utilizate sunt variabile locale (interne) ale funciei. Pentru a vedea coninutul unui fiier MATLAB, de exemplu evolutie_studii.m, se folosete comanda: type evolutie_studii Fiiere Script Atunci cnd se apeleaz la un fiier script, MATLAB-ul execut comenzile gsite n fiierul respectiv. Fiierele script pot lucra cu date din spaiul de lucru (workspace) sau pot crea date noi cu care opereaz. Script-urile nu furnizeaz argumente de ieire, iar variabilele create rmn n workspace, pentru a fi eventual folosite n calculele ulterioare. Fiierele script pot furniza ieiri grafice folosind funcii cum ar fi plot,bar. Exemplu de fiier script: magicrank.m, cu urmtoarele comenzi MATLAB:

% Investigate the rank of magic squares r = zeros(1,32); for n = 3:32 r(n) = rank(magic(n)); end

r bar(r)

La tastarea numelui fiierului script (fr extensia .m):

magicrank MATLAB-ul execut comenzile, calculeaz rangul unor matrici (matricile magice), i traseaz graficul cu rezultatele calculului. Dup ce se termin execuia fiierului, variabilele n i r rmn n spaiul de lucru. Graficul rezultat este prezentat n continuare:

Funcii (rutine) Aceste fiiere accept argumente de intrare i furnizeaz argumente de ieire. Numele fiierului MATLAB (M-file) i cel al funciei (subrutinei) respective trebuie s fie identice. Funciile (subrutinele) lucreaz cu variabile proprii separate de spaiul de lucru uzual al MATLAB-ului.

Exemplu: funcia rank. Fiierul M-file rank.m este disponibil n directorul toolbox/matlab/matfun Se poate vizualiza fiierul cu comanda: type rank

function r = rank(A,tol) % RANK Matrix rank. % RANK(A) provides an estimate of the number of % linearly independent rows or columns of a matrix A % RANK(A,tol) is the number of singular values of A % that are larger than tol.

% RANK(A) uses the default % tol = max(size(A)) * norm(A) * eps.

s = svd(A); if nargin==1 tol = max(size(A)) * max(s) * eps; end r = sum(s > tol);

Prima linie a unei funcii M-file ncepe cu cuvntul cheie function. Aceast linie d numele funciei, ordinea i numrul argumentelor. Liniile urmtoare (care ncep cu caracterul %) sunt linii de comentariu, care de fapt sunt i liniile afiate atunci cnd se apeleaz la comanda help rank Restul liniilor sunt executabile. Variabila s, ca i r, A, tol sunt variabile locale ale funciei i sunt separate de variabilele din workspace.

Funcia rank poate fi utilizat n diferite moduri: rank(A) r = rank(A) r = rank(A,1.e-6)

Variabile globale Dac se dorete ca mai multe astfel de subrutine s utilizeze o anume variabil comun, se declar variabila respectiv ca global utiliznd comanda global n toate funciile respective.

Exemplu: fiierul falling.m: function h = falling(t) global GRAVITY

h = 1/2*GRAVITY*t.^2; Se introduc apoi n mod interactiv liniile: global GRAVITY GRAVITY = 32; y = falling((0:.1:5)');

Funcia eval Funcia eval lucreaz cu variabil text pentru implementarea unei faciliti puternice de tip macro text.

Expresia eval(s) folosete interpreter-ul MATLAB pentru evaluarea expresiei sau execuia declaraiei din irul de caractere s. Vectorizarea Pentru a obine o vitez de calcul mare, este foarte important aa-numita vectorizare a algoritmilor n fiierele MATLAB. Acolo unde alte limbaje folosesc bucle de tip for sau DO, MATLAB-ul poate utiliza operaii matriceale sau vectoriale. Un exemplu simplu este urmtorul: x = 0; for k = 1:1001 y(k) = log10(x); x = x + .01; end Versiunea vectorizat a aceluiai program este x = 0:.01:10; y = log10(x);

Programatorii MATLAB spun uneori:

"Viaa este prea scurt pentru a i-o petrece scriind bucle!"

Atunci cnd nu se poate elimina complet folosirea unei bucle se utilizeaz procedura de prealocare.

Funcii de funcii n MATLAB exist o clas de funcii care lucreaz cu funcii neliniare ca argument. Funciile de funcii includ: Gsirea zerourilor Optimizare Integrare numeric Ecuaii difereniale ordinare

MATLAB-ul reprezint funcia neliniar ca o funcie M-file care poate fi ulterior utilizat ca argument de alte funcii MATLAB.

Exemplu:

Urmtorul fiier creeaz o funcie neliniar: function y = humps(x) y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

Aceast funcie poate fi evaluat pentru un set de puncte n intervalul 0 x 1 cu programul: x = 0:.002:1; y = humps(x); i apoi se poate reprezenta grafic funcia cu comanda plot(x,y) Graficul arat c funcia are un minim local la aproximativ x = 0.6. Dac de exemplu utilizm funcia fmins putem gsi imediat valoarea exact a lui x . Primul argument al funciei fmins este chiar

numele funciei pentru care calculm minimul (al doilea parametru este o aproximare grosier a localizrii minimului).

p = fmins('humps',.5) p= 0.6370

Se poate acum evalua valoarea funciei n punctul de minim local:

humps(p)

ans = 11.2528

2.4.

Matrici, vectori i polinoame

Pentru a lucra uor i bine cu limbajul MATLAB trebuie n primul rnd s se nvee manipularea matricilor. n MATLAB, o matrice este un tablou dreptunghiular de numere. Scalarii de exemplu sunt matrici 1 x 1, iar matricile cu o singur linie sau coloan sunt de fapt vectori.

Un exemplu celebru de matrice apare n gravura renascentist Melancholia realizat de marele artist i matematician amator Albrecht Drer. Gravura este ncrcat de simbolism matematic i la o atent observare a acesteia se poate distinge n colul din dreapta sus o matrice. Matricea respectiv este cunoscut sub numele de ptrat magic i n timpul lui Drer se considera c are proprieti magice.

Introducerea matricilor Matricile se pot introduce n mai multe moduri.

Introducerea unei liste explicite cu elementele matricei. ncrcarea unor date din fiere externe de date. Generarea de matrici utiliznd funcii built-in. Crearea de matrici n fiierele M-files.

Vom introduce matricea lui Drer mai nti ca o list de elemente. Trebuie respectate cteva convenii simple: Elementele unei linii sunt separate prin virgule sau spaii. Sfritul unei linii se marcheaz cu punct i virgul. Lista de elemente care formeaz matricea se delimiteaz cu paranteze drepte: [] Pentru introducerea matricii lui Drer tastm:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

MATLAB-ul va afia matricea: A= 16 3 2 13 8

5 10 11 9 6

7 12 1

4 15 14

O dat introdus, matricea este memorat n workspace i poate fi apelat simplu, ca A. S vedem acum: de ce este magic? sum, transpose, diag Caracterul magic deriv din faptul c prin efectuarea unor operaii asupra elementelor matrici rezult numere interesante i surprinztoare.

Dac de exemplu nsumm elementele pe orice linie sau coloan sau de pe cele dou diagonale, vom obine acelai numr. S verificm acest lucru cu MATLAB-ul. Suma elementelor de pe cele 4 coloane se calculeaz rapid cu: sum(A) ans = 34 34 34 34

Pentru calcularea sumelor pe linii, efectum nti transpunerea matricii i apoi aplic din nou comanda sum. Transpusa se calculeaz cu: A' ans = 16 5 9 4

3 10 2 11 13 i apoi sum(A')' ans = 34 34 34 34

6 15 7 14 1

8 12

Suma elementelor de pe diagonal se calculeaz cu tot cu funcia sum, dar dup ce n prealabil vom sorta cu funcia diag elementele de pe diagonala principal: diag(A) ans =

16 10 7 1 sum(diag(A)) ans = 34

Un anume element al matricii, de exemplu elementul din linia i coloana j se noteaz A(i,j). Prin urmare o alt cale (mai puin rapid) de a calcula suma de pe patra coloan de exemplu este urmtoarea:

A(1,4) + A(2,4) + A(3,4) + A(4,4) ans = 34

Dac specificm un element care nu exist n matrice, primim un mesaj de eroare:

t = A(4,5) Index exceeds matrix dimensions.

Operatorul : Operatorul : este foarte important. De exemplu, expresia 1:10 este un vector linie ans = 1 2 3 4 5 6 7 8 9 10

Alte exemple:

100:-7:50 ans = 100 93 86 79 72 65 58 51

0:pi/4:pi ans = 0 0.7854 1.5708 2.3562 3.1416

Expresia A(1:k,j) Se refer la primele k elemente ale coloanei j a lui A. Dac este utilizat n paranteze operatorul : atunci nseamn c ne referim la toate elementele unei linii sau coloane

sum(A(:,3)) calculeaz suma elementelor din coloana a treia a lui A: ans = 34

O alt proprietate interesant a ptratului magic este c suma magic 34 este obinut i prin nsumarea elementelor matricii i prin mprirea la dimensiunea matricii (4):

sum(1:16)/4 ans = 34 Observaie: suma magic pentru orice ptrat magic n x n este (n3 + n)/2 (se poate calcula cu ajutorul Symbolic Math Toolbox).

Funcia magic MATLAB-ul are o funcie built-in care creeaz ptrate magice de orice dimensiune (funcie pe care deja am utilizat-o):

B = magic(4) B= 16 2 3 13 8

5 11 10 9 7

6 12 1

4 14 15

Aceast matrice este aproape identic cu matricea lui Drer singura diferen fiind c cele dou coloane din mijloc sunt schimbate ntre ele. Pentru obinerea din B a matricii lui Drer se poate utiliza urmtoarea comand MATLAB:

A = B(:,[1 3 2 4]) A= 16 3 2 13 8

5 10 11 9 6

7 12 1

4 15 14

Polinoame

Polinoamele sunt descrise n MATLAB prin vectori linie ale cror elemente sunt de fapt coeficienii polinoamelor n ordinea descresctoare a puterilor.

Exemplu: polinomul p(x)=x3+5x+6 este reprezentat n MATLAB astfel:

p = [1 0 5 6]

Un polinom poate fi evaluat pentru o valoare a lui x cu ajutorul funciei polyval:

polyval(p,1) ans= 12

n exemplul de mai sus este evaluat polinomul p n punctul x =1.

Se pot afla cu uurin rdcinile polinomului folosind funcia roots:

r=roots(p) r= 0.5000 + 2.3979i 0.5000 - 2.3979i -1.0000

Exist numeroase alte funcii i comenzi care se ocup cu operaii asupra polinoamelor, funcii care vor fi abordate ntr-un capitol special. Dintre acestea amintim comanda care permite nmulirea a dou polinoame, i anume conv:

p1=[1 3 5] p1 = 1 3 5

p2=[2 0 1 0 5] p2 =

p3=conv(p1,p2) p3 = 2 2.5. 6 11 3 10 15 25

Operaiuni elementare cu matrici i funcii

MATLAB-ul opereaz cu matricile cu aceeai uurin cu care lucreaz cu scalarii. Pentru adunarea a dou matrici de exemplu se folosete pur i simplu semnul + ca la o adunare obinuit. Bineneles c matricile trebuie s aib aceleai dimensiuni pentru a putea fi adunate. Exemplu:

A=[2 3;15 -3] A= 2 3

15 -3

B=[11 -21; 12 4] B= 11 -21 12 4

C=A+B C= 13 -18 27 1

Pentru nmulirea a dou matrici se folosete operatorul * , valabil de altfel i pentru operaiile cu scalari. Exemplu:

D=A*B D= 58 -30 129 -327

Dac dimensiunile matricilor care se nmulesc nu sunt corespunztoare, atunci va fi furnizat un mesaj de eroare:

E=[1 23; -12 2;1 2] E= 1 23 -12 1 2 2

F=A*E ??? Error using ==> * Inner matrix dimensions must agree.

Pentru depanarea programului n cazul unor astfel de greeli se poate utiliza comanda size care ne d informaii despre dimensiunile matricilor respective i permite corectarea erorilor:

size(A) ans = 2 2

size(E) ans = 3 2

MATLAB-ul include multe alte funcii care opereaz cu matrici i care vor fi descrise i utilizate intensiv n capitolele urmtoare. Amintim aici cteva: det, inv, rank, eig etc.

O facilitate interesant a MATLAB-ului este aceea c lucreaz cu matricile cu operatori logici i relaionali ntr-un mod asemntor acestor operaii efectuate cu scalari. De exemplu, pentru operaiunea scalar

r=17>55 r= 0

MATLAB-ul rspunde cu r = 0, adic fals. Dac dorim de exemplu s comparm fiecare element al matricii A cu elementul corespunztor din matricea B, procedm asemntor: L=A<=B L= 1 0 0 1

Operatorii logici, adic & pentru I (AND), | pentru SAU (OR), ~ pentru NU (NOT), vor returna valoarea 1 pentru ADEVRAT i 0 pentru FALS. Exemplu:

A&B ans = 1 1 ~A ans = 0 0 1 1

3.

MEDIUL DE LUCRU MATLAB

MATLAB este, dup cum s-a afirmat deja, att un limbaj ct i un mediu de programare. Ca mediu de lucru, MATLAB include faciliti pentru manipularea variabilelor n spaiul de lucru, pentru importul i exportul datelor, precum i instrumente pentru dezvoltarea i manipularea fiierelor (Mfiles) i a aplicaiilor MATLAB.

Mediul de programare este utilizat n mod diferit n funcie de platforma pe care ruleaz MATLAB-ul (este vorba de sistemul de operare care poate fi de tip Windows sau Unix).

3.1.

Startul i terminarea sesiunilor de lucru

Pe platformele de tip Windows, programul de instalare creeaz un shortcut la programul executabil, shortcut care poate fi plasat pe desktop (pe display-ul de lucru al calculatorului). Prin efectuarea unui dublu click pe icon-ul care reprezint acest shortcut se starteaz MATLAB-ul. Pentru startarea MATLAB-ului pe un sistem UNIX trebuie tastat matlab la prompterul sistemului de operare.

Fiiere de pornire (Startup Files) La pornire, MATLAB-ul execut automat fiierul master matlabrc.m i, dac exist, fiierul startup.m. Fiierul matlabrc.m este rezervat pentru administratorul de sistem (reea), n timp ce fiierul startup.m este destinat utilizatorilor. De aici se pot seta cile de acces, se pot defini setrile implicite pentru instrumentele Handle Graphics i se pot predefini variabile n spaiul de lucru. De exemplu, dac n startup.m se introduce linia addpath /home/me/mytools se adaug un director de instrumente proprii pentru calea implicit de cutare. Pe platformele Windows, fiierul startup.m se plaseaz n directorul local din directorul toolbox. Opiuni de pornire Se pot specifica opiuni de pornire, aceste opiuni fiind adugate pe calea shortcut-ului MATLAB. n continuare sunt prezentate cteva posibile opiuni.

Opiunea de Startup DescriereAutomationStarteaz MATLAB-ul ca un server automat, minimizat, fr splash screen. Logfile logfilenameScrie n mod automat ieirile din MATLAB ntr-un log file specificat.MinimizeStarteaz MATLAB-ul minimizat i fr splash screen-ul MATLAB.NosplashStarteaz MATLAB-ul fr afiarea splash screen-ului MATLAB.r M_fileRuleaz automat fiierul .m specificat imediat dup pornirea MATLAB.ului.RegserverModific regitrii Windows cu intrri adecvate tip ActiveX pentru MATLAB. UnregserverModific regitrii Windows pentru tergerea intrrilor ActiveX pentru MATLAB. Se utilizeaz pentru resetarea regitrilor. De exemplu, pentru a porni MATALB-ul i a rula imediat n mod automat un fiier cum ar fi de exemplu rezultate.m, se poate utiliza urmtoarea cale pentru shortcut:

D:\bin\nt\matlab.exe /r rezultate

Terminarea unei sesiuni de lucru Pentru a prsi mediul MATLAB, se tasteaz quit la prompterul MATLAB. n cazul platformelor Windows, se poate termina sesiunea prin selectarea opiunii exit din meniul File sau se poate utiliza butonul close vizibil n colul din dreapta sus al ferestrei de comand MATLAB. Comanda quit ruleaz fiierul finish.m, dac acesta exist n cile de cutare ale MATLAB-ului. Se pot include comenzi de tipul save n acest fiier, pentru a salva automat variabilele din spaiul de lucru la ncheierea sesiunii. O alt opiune este de a cere afiarea unei casete de dialog pentru confirmarea terminrii sesiunii. Aceste dou tipuri de opiuni se pot gsi n directorul /toolbox/local:

finishsav.m:

permite salvarea variabilelor curente

finishdlg.m:

afieaz o caset de dialog pentru confirmarea opririi

3.2.

Fereastra de comand (fereastra principal)

Fereastra de comand este fereastra principal prin intermediul creia se poate comunica cu MATLAB-ul. Pe platformele Windows, MATLAB-ul furnizeaz o fereastr special, cu faciliti de tip Windows.

Pe sistemele UNIX, fereastra de comand este fereastra terminal din care este lansat MATLAB-ul. Interpreterul MATLAB afieaz un prompter (>>) indicnd faptul c este gata s accepte comenzile utilizatorului. De exemplu, pentru introducerea unei matrici 3 x 3 se poate tasta: A = [1 2 3; 4 5 6; 7 8 10]

i la apsarea tastelor Enter sau Return, MATLAB-ul rspunde cu: A= 1 4 7 2 5 3 6

8 10

3.2.1. Editarea liniilor de comand n fereastra principal Tastele de tip sgeat i tasta Ctrl permit apelarea, editarea i eventual reutilizarea comenzilor editate anterior. De exemplu:

rho = (1+ sqt(5))/2

Undefined function or variable 'sqt'.

Pentru eliminarea greelii de editare a numelui funciei radical (sqrt) nu se mai editeaz din nou toat linia, ci se folosete tasta , apare din nou linia de comand greit i apoi cu tasta se deplaseaz cursorul pe linie i se repar greeala. Lista complet a sgeilor i tastelor care permit controlul asupra operaiunilor cu linia de comand este prezentat n tabelul urmtor: Arrow KeyControl KeyOperation Ctrl-pRecall previous line. Ctrl-nRecall next line. Ctrl-bMove back one character. Ctrl-fMove forward one character.ctrlCtrl-rMove right one word.ctrl-

Ctrl-lMove left one word.homeCtrl-aMove to beginning of line.endCtrl-eMove to end of line.escCtrluClear line.delCtrl-dDelete character at cursor.backspaceCtrl-hDelete character before cursor.CtrlkDelete (kill) to end of line. tergerea ferestrei de comand Pentru tergerea coninutului (afiajul) ferestrei principale se poate folosi comanda clc, care ns nu are ca efect tergerea variabilelor curente din spaiul de lucru.

Controlul afirii paginilor ecran n fereastra de comand Pentru a controla afiarea paginilor n fereastra de comand se utilizeaz comanda more. Setarea implicit este more off. Atunci cnd setm more on, o pagin ecran este afiat. Apoi se poate utiliza:

ReturnTo advance to the next lineSpace BarTo advance to the next pageqTo stop displaying the output ntreruperea unui program care ruleaz Se poate ntrerupe un program care ruleaz prin apsarea pe tastele Ctrl-c. Pe sistemele Windows se va atepta terminarea execuiei funciilor de tip built-in sau a fiierelor de tip MEX-file. Pe sistemele UNIX, execuia programului se va ncheia imediat. Comanda format Comanda format controleaz formatul numeric al valorilor afiate pe ecran i a fost deja discutat ntr-un paragraf anterior. Comanda are efect asupra afirii numerelor, i nu asupra modului intern de reprezentare a acestora. Pe sistemele Windows, se poate schimba setarea implicit a formatului prin selectarea meniului Preferences din meniul File i selectarea formatului dorit din General.

Suprimarea afirii rezultatelor unei linii comand Deoarece la apsarea tastelor Return sau Enter MATLAB-ul afieaz automat rezultatele pe ecran, dac ncheiem linia de comand cu punct i virgul, va fi realizat calculul, dar nu va mai fi afiat. Aceast facilitate este important atunci cnd avem de lucrat cu matrici mari sau cu multe date. Exemplu: A = magic(100);

Linii de comand lungi Dac o declaraie nu ncape ntr-o linie de comand, se pot utiliza trei puncte urmate de Return sau Enter pentru a indica faptul c expresia continu pe linia urmtoare. Exemplu:

s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

Spaiile albe din jurul semnelor =, +, - sunt opionale i pot mbunti citirea liniilor. Maximul numrului de caractere pe o singur linie este de 4096.

3.2.2. Descrierea ferestrei de comand Fereastra de comand permite rularea comenzilor MATLAB, lansarea unor instrumente cum ar fi Editor/Debugger i permite startarea toolbox-urilor.

Toolbar (bara de instrumente)

Toolbar-ul din fereastra de comand permite accesul la operaii simple:

Meniuri

Meniurile fereastrei de comand furnizeaz accesul la operaii care nu sunt accesibile din toolbar.

Preferine

Sunt utilizate pentru controlarea operaiilor i a modului de prezentare din fereastra de comand. Pentru aceasta se selecteaz Preferences din meniul File, iar dup apariia casetei de dialog Preferences se pot seta preferinele pentru General, Command Window Font i Copying Options.

General Preferences: rulat. Numeric Format Specific formatul numeric implicit. Editor Preference Permite folosirea editorului MATLAB sau specificarea altui editor. Help Directory Specific directorul n care se afl fiierele de tip help. Echo On Seteaz facilitatea de afiare a liniilor program n timp ce un program MATLAB este

Show Toolbar Arat sau ascunde toolbar-ul.

Enable Graphical Debugging Permite depanarea (Debugger) n mod automat la fiecare breakpoint.

Command Window Font: Specific caracteristicile fontului pentru textul afiat n fereastra de comand.

Copying Options: Specific opiunile utilizate la copierea unor obiecte din MATLAB n clipboard pentru rescrierea n alte aplicaii.

3.2.3. Spaiul de lucru al MATLAB-ului (workspace)

Spaiul de lucru conine un set de variabie (numite tablouri sau matrice) care pot fi manevrate din linia de comand. Se pot folosi comenzile who i whos (deja prezentate) pentru a vedea care sunt variabilele curente din workspace. Pentru tergerea variabilelor din workspace se utilizeaz comanda clear.

ncrcarea i salvarea din workspace

Comenzile save i load descrise ntr-un subcapitol anterior au rolul de a salva variabilele din spaiul de lucru i respectiv de a le rencrca ntr-o sesiune ulterioar. Aceste comenzi se pot folosi i pentru a importa i exporta date.

Pe platformele Windows, operaiile save, load sunt disponibile i prin selectarea opiunilor Save Workspace As, respectiv Load Workspace din meniul File.

Citirea sau scrierea unor fiiere .mat din programe externe n C sau Fortran se poate face cu Interfaa de Aplicaii Program (API). Formatul n care comanda save stocheaz datele poate fi controlat prin adugarea unor flag-uri n lista de nume de fiiere sau variabile:

-matUtilizeaz formatul binar tip .MAT (implicit).-asciiUtilizeaz formatul ASCII pe 8 digii.-ascii doubleUtilizeaz formatul ASCII pe 16 digii.-ascii -double tabsDelimiteaz elementele tablourilor cu tab-uri.-v4Salveaz ntr-un format pe care versiunea 4 MATLAB l poate deschide.-appendAdaug datele ntr-un fiier .MAT existent. Observaie: atunci cnd se salveaz coninutul spaiului de lucru n format ASCII trebuie salvat cte o variabil pentru a permite reconstituirea ulterioar a acesteia.

ncrcarea unor fiiere cu date ASCII Comanda load permite importul de fiiere de date ASCII. Exemplu:

load diverse.dat

creeaz o variabil cu numele diverse n workspace. Dac datele ASCII au m linii cu n valori pe fiecare linie, rezultatul va fi o matrice numeric m x n. Nume de fiiere ca iruri de caractere Dac numele fiierelor sau variabilelor cu care se lucreaz sunt stocate n variabile de tip ir de caractere, se poate folosi dualitatea comand/funcie pentru a apela load i save ca funcii. De exemplu save('myfile','VAR1','VAR2') A = 'myfile';

load(A) au acelai efect ca save myfile VAR1 VAR2 load myfile

Pentru ncrcarea sau salvarea mai multor fiiere cu acelai prefix i cu sufixe numere ntregi succesive se poate utiliza o bucl. Exemplu: file = 'data'; for i = 1:10 j = i.^2; save([file int2str(i)],'j'); end

Wildcards Comenzile load i save permit specificarea unui caracter special de tip wildcard (*). Exemplu: save rundata x* salveaz toate variabilele din workspace care ncep cu x n fiierul rundata.mat.

Browser-ul Workspace Browser-ul Workspace permite vizualizarea coninutului spaiului de lucru curent (este de fapt varianta grafic a comenzii whos). Pentru a deschide acest instrument, se selecteaz Show Workspace din meniul File i apoi se face click din mouse pe tasta Workspace Browser din toolbar.

3.2.4. Ci de cutare MATLAB-ul utilizeaz o cale de cutare (search path) pentru a gsi fiierele .m . Aceste fiiere sunt organizate n directoare, din care unele sunt furnizate de MATLAB i altele sunt disponibile separat ca toolbox-uri.

Dac de exemplu tastm numele fis la prompterul MATLAB, interpreterul MATLAB va face urmtoarea cutare: 1. 2. 3. 4. Caut pe fis ca pe o variabil. Verific dac fis este o funcie tip buit-in. Caut n directorul curent fiierul numit fis.m. Caut n directoarele aflate n calea de cutare fiierul fis.m.

Schimbarea cii de cutare Calea de cutare poate fi afiat sau schimbat folosind funciile path, addpath, rmpath: Path determin rentoarcerea la calea curent. path(s), unde s este un ir de caractere, seteaz calea la s. addpath /home/lib i path(path,'/home/lib') adaug noi directoare la calea de cutare. rmpath /home/lib terge calea /home/lib.

Calea de cutare implicit este definit n fiierul pathdef.m n directorul local.

Fiiere pe calea de cutare Pentru a afia calea de cutare se poate folosi path. Dac dorim s vedem ce fiiere MATLAB sunt ntr-un director se utilizeaz comanda what. Exemplu: what matlab/elfun

Pentru a vedea coninutul unui fiier se folosete comanda type (deja descris ntr-un paragraf anterior). Exemplu: type rank

Pentru editarea unui fiier M-file se poate utiliza edit. Exemplu: edit rank

Path Browser

MATLAB-ul furnizeaz i un browser al cii de cutare (Path Browser) cu o interfa grafic pentru vizualizarea i schimbarea cii de cutare. Pentru startarea acestui browser se utilizeaz pathtool, sau se selecteaz Set Path din meniul File, sau se face click pe butonul Path Browser din toolbar.

Meniurile din Path Browser pot fi folosite pentru: Adugarea unui director pe calea de cutare. tergerea (ndeprtarea) unui director din cale. Salvarea setrilor n fiierul pathdef.m. Restabilirea setrilor implicite.

Directorul curent

MATLAB-ul menine un director curent pentru lucrul cu fiiere de tip .m i .mat. Pe platformele Windows, directorul curent iniial este specificat n shortcut-ul utilizat pentru pornirea MATLAB-ului.

Pentru schimbarea setrilor implicite se poate face click cu butonul din dreapta al mouse-ului i se selecteaz meniul Properties.

Deschiderea fiierelor n MATLAB Se pot deschide fiiere n funcie de extensiile lor prin folosirea funciei open, care este o funcie extensibil de ctre utilizator. Se pot include i alte tipuri de fiiere n afara fiierelor MATLAB standard: NumeAciuneFigure file (*.fig)Deschide o figur ntr-o fereastr tip figur.M-file (name.m)Deschide fiierul name de tip .m n Editor.Model (name.mdl)Deschide modelul name n Simulink.P-file (name.p)Deschide fiierul corespunztor name.m, dac exist, n Editor.VariableDeschide tabloul name n Array Editor (tabloul trebuie s fie numeric); open apeleaz openvar.Alte extensii (name.custom)Deschide name.custom prin apelarea funciei helper opencustom, unde opencustom este o funcie definit de utilizator.3.3. Fereastra grafic (figure) MATLAB-ul direcioneaz ieirile grafice spre o fereastr distinct de fereastra de comand. Aceast fereastr grafic este denumit figur (figure).

Funciile grafice creeaz n mod automat o nou fereastr grafic dac nu exist una curent. Dac exist o astfel de fereastr, MATLAB-ul o va utiliza. Dac exist mai multe ferestre de tip figur, atunci una dintre ele este asignat ca fiind fereastra curent (n general este ultima fereastr figur utilizat).

Funcia figure genereaz ferestre grafice. De exemplu,

figure

genereaz o nou fereastr i o face fereastra curent. O funcie grafic, cum ar fi funcia plot, genereaz un grafic n fereastra de tip figur. De exemplu,

t = 0:pi/100:2*pi; y = sin(t); plot(t,y)

traseaz graficul funciei sinus de la 0 la 2 n fereastra curent de tip figur, dac aceasta exist, iar dac nu ntr-una nou creat. Prelucrarea graficelor cu Plot Editor Dup generarea unui grafic (plot), se pot face schimbri i prelucrri ale graficului cu interfaa grafic Plot Editor. Figura urmtoare ilustreaz principalele faciliti ale ferestrei grafice i ale interfeei Plot Editor.

Pentru salvarea unei figuri se selecteaz Save din meniul File. Pentru salvarea ntr-un format diferit, cum ar fi TIFF, necesar utilizrii n alte aplicaii se selecteaz Export din meniul File.

3.4.

Importul i exportul de date

Sunt multe posibiliti de a realiza importul i exportul de date ntre MATLAB i alte aplicaii. n majoritatea cazurilor se pot utiliza facilitile MATLAB de a citi sau scrie fiiere (pentru aplicaii complicate trebuie scrise programe n C sau Fortran).

Importul de date n tabelul urmtor sunt prezentate cteva metode de import date: MetodaCnd trebuie utilizat metoda. Mod de utilizareIntroducerea unei liste explicite de elementeAtunci cnd cantitatea de date este mic. Se tasteaz pur i simplu datele utiliznd parantezele drepte ([ ]). Crearea de date ntr-un fiier .mSe utilizeaz un editor de text pentru generarea unui fiier .m. Metoda este util atunci cnd datele nu sunt deja n form digital. Este ntr-un fel similar cu prima metod.ncrcarea datelor dintr-un fiier ASCIIFiierele ASCII stocheaz datele pe linii cu un numr egal de elemente spaiate prin blanc-uri, linii ncheiate cu Enter. Aceste fiiere se pot edita cu un editor de texte obinuit. Datele sunt introduse n MATLAB cu funcia load. Se poate utiliza dlmread dac este necesar specificarea altor delimitatori.Citirea datelor cu fopen, fread i cu funciile de intrare/ieireMetoda este folosit cnd se ncarc date de la alte aplicaii, date care au propriul lor format. Funcii specializate de citire a fiierelorDlmreadCitete fiiere de date ASCII.TextreadCitete date de tip caracter sau numerice dintr-un fiier i le convertete n variabile MATLAB. Wk1readCitete fiiere de tip (WK1) (tip foaie de lucru)ImreadCitete din fiiere grafice.AureadCitete fiiere de sunet tip (.au).WavreadCitete fiiere de sunet Microsoft WAVE (.wav).Crearea de fiiere tip MEX pentru citirea datelorEste metoda potrivit dac sunt deja disponibile rutine C sau Fortran pentru citirea datelor din alte aplicaii. Dezvoltarea unor programe n Fortran sau CSe utilizeaz n cazuri complexe pentru translatarea unor date n format .mat i apoi ncrcarea cu comanda load.

Exportul datelor n tabelul urmtor sunt prezentate cteva metode de export date: MetodaCnd trebuie utilizat metoda. Mod de utilizareFolosirea comenzii diary Pentru tablouri de date de mic dimensiune se folosete comanda diary pentru crearea unui fiier de tip jurnal i afiarea variabilelor. Ieirea diary include comenzile MATLAB folosite ntr-o sesiune de lucru.Salvarea datelor n format ASCIISe utilizeaz comanda save cu opiunea -ascii. Se poate folosi dlmwrite dac este necesar specificarea altor delimitatori.Scrierea datelor n formate specialeSe folosesc fwrite i alte funcii I/O de nivel sczut. Este util la scrierea datelor n formate cerute de alte aplicaii.Funcii specializate de scriere a fiierelor DlmwriteScrie fiiere n format ASCII.wk1writeScrie fiiere tip (WK1).ImwriteScrie imagini pentru fiiere grafice.AuwriteScrie fiiere de sunet tip (.au).WavwriteScrie fiiere de sunet tip Microsoft WAVE (.wav).Crearea unor fiiere tip MEX pentru scrierea datelorEste metoda potrivit dac sunt deja disponibile rutine C sau Fortran pentru scrierea datelor n formate cerute de alte aplicaii.

Scrierea datelor n fiiere tip .MATSe folosete comanda save i apoi se scrie un program n Fortran sau C pentru translatarea fiierului .mat n formatul dorit.

Fiiere de tip text cu delimitatori Funciile dlmread i dlmwrite amintite mai sus permit citirea i scrierea unor valori separate prin delimitatori nt-un fiier de date ASCII. Un delimitator este orice caracter care separ valorile. Exemplu: considerm un fiier fiz.dat ale crui componente sunt separate prin punct i virgul:

7.2;8.5;6.2;6.6 5.4;9.2;8.1;7.2

Citirea i transcrierea componentelor ntr-un tablou (matrice) A se face astfel:

A = dlmread('fiz.dat', ';');

n mod similar se folosete dlmwrite pentru scrierea unui text cu delimitatori ntr-un fiier extern: A= 1 4 2 5 3 6

dlmwrite('myfile',A,';')

myfile va conine:

1;2;3 4;5;6

Citirea fiierelor cu format uniform

Funcia textread citete date de tip caracter sau numerice dintr-un fiier i le transcrie n variabile MATLAB folosind specificatorii de conversie care definesc lungimea cmpului de date i formatul acestora. Funcia textread este util pentru fiiere cu format uniform i cunoscut (de exemplu cu delimitatori de tip virgul sau tab). Exemplu: fie fiierul mydata.dat : Sally Type1 12.34 45 Yes

Pentru citirea fiierului mydata.dat ca fiier cu format liber se folosete formatul de conversie %:

[names,types,x,y,answer]=textread('mydata.dat','%s %s %f %d %s',1)

unde %s citete un ir de caractere separat prin spaii albe, %f citete o valoare tip floating point, i %d citete un ntreg cu semn. MATLAB va rspunde:

names = 'Sally' types = 'Type1' x= 12.34000000000000 y= 45 answer = 'Yes'

Schimbarea de date ntre platforme (sisteme de operare) n unele situaii este necesar transferul de date i programe ntre utilizatori care lucreaz cu sisteme de operare diferite. Aplicaiile MATLAB constau n fiiere .m cu funcii i script-uri i fiiere tip .mat cu date binare. Ambele tipuri de fiiere pot fi transportate direct ntre diferite computere:

Fiierele .m conin text simplu i sunt independente de main.

Fiierele .mat sunt binare i dependente de main dar pot fi transportate ntre computere deoarece conin semntura de main n antetul fiierului. Pentru utilizarea i transportul aplicaiilor MATLAB pe diverse computere (sisteme de operare) trebuie s ne asigurm c fiierele .mat se transmit n binary file mode i fiierele .m n ASCII file mode.

Comanda diary Comanda diary genereaz o copie a sesiunii de lucru MATLAB ntr-un fiier disc (fr grafice). Se poate vizauliza i edita textul rezultat cu orice procesor de texte. De exemplu, pentru crearea unui fiier cu numele octomb26.out care conine comenzile i ieirile (rspunsurile) MATLAB corespunztoare, trebuie tastat:

diary octomb26.out

Pentru oprirea nregistrrii sesiunii se folosete:

diary off

3.5.

Utilizarea memoriei

MATLAB-ul necesit o zon continu de memorie pentru stocarea datelor din fiecare matrice. De asemenea, imaginile i filmele (animaia) cer o mare cantitate de memorie. n plus, harta de pixeli (pixmap) folosit pentru imagini cere o cantitate de memorie proporional cu suprafaa imaginii de pe ecran. O imagine color de 500x500 pixeli cere 1 Mb de memorie. Pentru limitarea memoriei necesare trebuie limitat dimensiunea imaginilor de pe ecran. Rezolvarea erorilor de memorie Dac nu exist memorie suficient, n cazul unor matrici de dimensiuni mari este posibil apariia unei erori de memorie de tip out of memory. Se poate ncerca o defragmentare a memoriei cu comanda pack. Dac astfel de erori out of memory sunt dese se pot ncerca i alte metode:

n cazul sistemelor Windows se crete memoria virtual folosind System Properties pentru Performance, instrument accesibil din Control Panel. Pentru sisteme UNIX trebuie cerut administratorului de sistem s creasc spaiul swap.

Administrarea memoriei MATLAB MATLAB-ul utilizeaz funciile C standard malloc i free pentru alocarea memoriei dinamice. Aceste rutine menin de regul o rat relativ lent de utilizare a memoriei alocat de sistemul de operare. Pentru MATLAB, malloc i free aloc memoria ntr-un ritm mai rapid. Pe msur ce MATLABul nu mai are nevoie de memorie, malloc i free nu returneaz memoria adiional sistemului de operare (rutinele presupun c dac a fost nevoie de o cantitate mare de memorie o dat, atunci este posibil s mai fie nevoie nc o dat). Din acest motiv este posibil ca alte aplicaii care ruleaz s nu poat dispune de memorie, chiar dac MATLAB-ul nu mai are nevoie. Pentru a diponibiliza cantitatea de memorie trebuie terminat sesiunea MATLAB.

4.

EDITORUL/DEBUGGER-UL I PROFILER-UL MATLAB

4.1. Editorul/Debugger-ul MATLAB MATLAB-ul dispune de un editor propriu, editor care este asociat i cu un program de depanare (debugger). Editorul/debugger-ul ofer posibilitatea de a efectua operaiunile de editare de baz precum i accesul la instrumente de depanare a fiierelor .m . Pachetul Editor/Debugger ofer i o interfa grafic uor de utilizat. Pentru lansarea editorului se tasteaz la prompterul MATLAB comanda edit. Se pot folosi i butoanele/meniurile accesibile din fereastra de comand.

Setarea implicit a Editorului Facilitile de editare i depanare sunt setate s fie active n mod implicit atunci cnd MATLAB-ul este instalat.

Dac se dorete instalarea altui editor sau nu se dorete apelarea la depanarea n regim grafic se pot dezactiva aceste faciliti prin setarea corespunztoare. De exemplu (n UNIX) se modific ~home/.Xdefaults file: matlab*builtInEditor: Off matlab*graphicalDebugger: Off

Trebuie rulat xrdb -merge ~home/.Xdefaults nainte de pornirea MATLAB-ului.

Debugger-ul MATLAB. Exemple de depanare a fiierelor MATLAB Debugger-ul permite identificarea erorilor de programare. Prin folosirea debugger-ului se poate vizualiza coninutul workspace-ului n orice moment n timpul execuiei unei funcii i se poate executa programul (codul) MATLAB linie cu linie. Pentru folosirea acestui instrument de depanare se poate utiliza interfaa grafic a debuggerului sau se pot folosi linii de comand. Depanarea permite corectarea a dou tipuri de erori: Erori de sintax, cum ar fi scrierea incorect a numelui unei funcii sau omiterea unor paranteze. MATLAB-ul detecteaz majoritatea acestor erori i afieaz un mesaj de eroare care descrie natura erorii i numrul liniei din programul .m n care a aprut eroarea respectiv. Erori de rulare (de calcul), care sunt mai mult de natur algoritmic. De exemplu este posibil s modificm o alt variabil dect trebuie sau s efectum un calcul incorect. Aceste erori sunt observate atunci cnd fiierul rulat furnizeaz rezultate necorespunztoare. n timp ce erorile de sintax se corecteaz realtiv uor pe baza mesajelor de eroare, erorile de rulare sunt mai greu de depanat. Se pot utiliza n acest caz mai multe tehnici de depanare:

Se ndeprteaz delimitatorii de tip punct i virgul de la sfritul liniilor program. Astfel la rularea programului vor fi afiate i rezultatele intermediare corespunztoare fiecrei linii. Se adaug comanda keyboard n fiierele .m care sunt depanate. Aceast comand oprete execuia programului respectiv, d controlul la tastatur i d posibilitatea examinrii i schimbrii unor funcii sau variabile. Acest mod de lucru este indicat printr-un prompter special: "K>>." Pentru a continua execuia, se tasteaz return i se apas apoi tasta Return. Se folosete Debugger-ul MATLAB.

Debugger-ul este util deoarece permite accesul la funciile din workspace, examinarea i eventual modificarea coninutului acestora. Debugger-ul permite setarea sau tergerea unor puncte de oprire: breakpoints, care sunt linii speciale n programul MATLAB la ntlnirea crora execuia se oprete i sunt posibile operaii de schimbare i de execuie a liniilor de comand una cte una.

Exemplu de depanare Pentru a ilustra procedurile de depanare disponibile (ndeosebi pentru cazul erorilor de rulare) vom folosi un exemplu preluat din MATLAB User Guide. Vom scrie un fiier denumit variance.m care este o funcie avnd ca intrare un vector i ca ieire un scalar. Fiierul apeleaz la o alt funcie, numit sqsum, care calculeaz o sum medie ptratic a vectorului de intrare.

function y = variance(x) mu = sum(x)/length(x); tot = sqsum(x,mu); y = tot/(length(x)-1);

n fiierul sqsum.m se strecoar intenionat o eroare.

function tot = sqsum(x,mu) tot = 0; for i = 1:length(mu) tot = tot + ((x(i)-mu).^2); end

Pentru verificarea corectitudinii calculelor, folosim funcia MATLAB std (calculeaz deviaia standard) care permite efectuarea unui calcul echivalent. Se introduce mai nti un vector de intrare de test: v = [1 2 3 4 5]; apoi se utilizeaz funcia std:

var1 = std(v).^2 var1 = 2.5000

ncercm funcia variance care apeleaz funcia sqsum (scris eronat): myvar1 = variance(v) myvar1 = 1

Rspunsul este greit. Vom ncerca cu debugger-ul s gsim i s corectm greeala.

Depanarea cu ajutorul interfeei grafice a Debugger-ului A. Pentru startarea procedurii de depanare: Dac fiierul .m (adic variance.m) a fost creat cu editorul MATLAB i suntem n fereastra Editor/Debugger, se continu din acest punct. Dac fiierul a fost creat cu un editor extern, se starteaz Editor/Debugger-ul i apoi se face click pe butonul Open M-file din toolbar.

Toolbar-ul Editor/Debugger conine o serie butoane descrise n continuare:

Buton Toolbar Scop Descriere Comand Echivalent

Seteaz/ terge

Breakpoint Seteaz sau terge un breakpoint pe linia pe care este poziionat cursorul. Dbstop/ Dbclear

terge toate Breakpoint-urile terge toate breakpoint-urile care sunt setate n mod curent. Dbclear all

Step In (Pas n)Execut linia curent a fiierului .m i dac linia este o apelare la alt funcie sare (face un pas) n funcia respectiv.Dbstep in

Single Step (Un singur pas)Execut linia curent a fiierului .m .Dbstep ContinuContinu execuia fiierului pn la terminare sau pn la alt breakpoint.Dbcont Sfrit depanare Ieirea din starea de depanare. dbquit Prin apsarea butonului din dreapta al mouse-ului n fereastra editorului se poate obine un meniu cu toate aceste opiuni.

B. Setarea Breakpoint-urilor Punctele de oprire (breakpoint-uri) determin oprirea execuiei fiierului la linia specificat i permit evaluarea i schimbarea variabilelor din workspace nainte de reluarea execuiei. Breakpoint-ul este indicat printr-un semn rou de stop ( ) nainte de linia respectiv.

Pentru exemplul considerat, la nceputul depanrii nu se tie unde ar putea fi eroarea, ns un loc logic de amplasare a unui breakpoint pentru a face verificri este n linia 4 a funciei variance.m:

y = tot/(length(x)-1);

Pentru setarea breakpointului se poziioneaz cursorul pe linia 4 i se face click pe butonul din toolbar sau se alege Set Breakpoint din meniul Debug. C. Examinarea variabilelor Pentru verificarea variabilelor, se execut mai nti funcia din fereastra de comand: variance(v)

Atunci cnd execuia programului ajunge la breakpoint, o sgeat galben orizontal ( ) arat urmtoarea linie care va fi executat. Dac sgeata galben este vertical ( ) atunci aceasta indic o pauz la sfritul unui script sau a unei funcii i permite examinarea variabilelor nainte de rentoarcerea la funcia principal.

Acum putem verifica valorile variabilelor mu i tot. Se selecteaz textul care conine variabilele i se face click din butonul drept al mouse-ului dup care se alege din meniu Evaluate Selection.

n fereastra de comand va fi afiat att textul selectat ct i rezultatul: K>> mu mu = 3

K>> tot tot = 4 Din analiza acestor valori se observ c eroarea se afl n sqsum.

D. Schimbarea contextului spaiului de lucru

Se poate folosi meniul Stack pentru schimbarea contextului spaiului de lucru, adic pentru ieirea din funcia variance i vizualizarea coninutului workspace-ului, prin selectarea din meniu a opiunii Base Workspace:

Prin utilizarea comenzii whos sau a Browserului Workspace se vor vizualiza variabilele v i myvar1, ca de altfel i celelalte variabile create. Pentru ntoarcerea la contextul spaiului de lucru local al funciei variance se selecteaz Variance din meniu.

E. Executarea pas cu pas a programului i continuarea execuiei Se terge breakpoint-ul din linia 4 din variance.m prin plasarea cursorului pe linie i selectarea opiunii Clear Breakpoint din meniul Debug. Se continu execuia programului cu Continue din meniul Debug. Se deschide sqsum.m i se seteaz un breakpoint la linia 4 pentru verificarea buclei i a calculelor. Se ruleaz din nou variance. Execuia se va opri acum la linia 4 din sqsum.

Se poate acum evalua indicele buclei i: K>> i i= 1 dup care prin selectarea opiunii Single Step din meniul Debug se execut linia urmtoare. Se evalueaz variabila tot: K>> tot tot = 4 Se selecteaz din nou Single Step: for i = 1:length(mu) Se observ c bucla este iterat numai pn la lungimea lui mu, care este scalar, i nu pn la lungimea lui x, vectorul de intrare (aceasta este de fapt greeala). O dat eroarea gsit se selecteaz Quit Debugging i se termin execuia programului. Se terge breakpoint din sqsum i se pune un breakpoint la linia 4 din variance.m, dup care rulm din nou: variance(v)

La oprirea execuiei se seteaz valoarea lui tot la valoarea corect (10): K>> tot = 10 tot = 10 Selectm Continue Execution i obinem rezultzatul corect.

F. Terminarea sesiunii de depanare Se selecteaz Exit Editor/Debugger din meniul File i se termin sesiunea de depanare. Pentru corectarea definitiv a erorii se folosete editorul i se ruleaz din nou programul pentru o ultim verificare.

Depanarea din linia de comand Folosirea facilitilor de depanare se poate realiza i direct din linia de comand, prin intermediul unui set de comenzi. Aceste comenzi sunt prezentate n forma lor general n tabelul urmtor. Descriere Sintax Setarea unui breakpoint. dbstop at line_num in file_nametergerea unui breakpoint. dbclear at line_num in file_nameStop la atenionare, eroare sau generarea de NaN/Inf. dstop if warning error naninf infnanReluarea execuiei. Dbcont Listarea apelrii de funcii. Dbstack Listarea tuturor breakpoint-urilor.

dbstatus file_name Executarea a una sau mai multe linii. dbstep nlines Listarea fiierelor M-file cu liniile numerotate.dbtype file_name Schimbarea contextului spaiului de lucru local (down).dbdownSchimbarea contextului spaiului de lucru local (up).dbup Prsirea modului de depanare. dbquit

Pentru informaii suplimentare privind utilizarea acestor funcii se poate apela la comanda help urmat de numele comenzii respective. Exemplul de depanare a unui fiier cu erori prezentat anterior poate fi reluat, utilizndu-se n locul interfeei grafice a debugger-ului comenzi corespunztoare n linia de comand.

4.2. Profiler-ul MATLAB Pentru mbuntirea performanelor fiierelor MATLAB se utilizeaz un instrument MATLAB numit Profiler. Acest instrument furnizeaz informaii utile privitoare la timpul alocat calculelor efectuate de fiecare linie program.

Cu ajutorul Profiler-ului se msoar modul n care programul consum timp, i o msur este evident mai bun dect ghicitul rutinelor sau funciilor care consum mult timp de calcul.

Programarea eficient presupune folosirea Profiler-ului pentru determinarea strangulrilor din programul creat i apoi modificarea programului pentru optimizarea timpului de calcul.

Programele MATLAB au n general o structur multistrat generat de faptul c funciile utilizate apeleaz deseori alte funcii i aa mai departe. De aceea este important s fie identificate acele funcii consumatoare de timp i nlocuite dac este posibil. Profiler-ul permite: Evitarea calculelor inutile. Schimbarea algoritmilor pentru evitarea folosirii unor funcii consumatoare de timp.

Evitarea recalculrilor prin stocarea unor rezultate ce pot fi utilizate ulterior.

Comanda profile Pentru a crea un profil al programului (fiierului) MATLAB se folosete comanda profile pentru a genera i vizualiza statisticile despre programul respectiv. n tabelul urmtor sunt prezentate formele posibile ale acestei comenzi.

Sintax Opiuni Descriere Profile on Starteaz profiler-ul i terge statisticile nregistrate anterior. -detail levelSpecific nivelul funciei analizate. -historySpecific secvena exact a apelurilor fcute de funcia care va fi nregistrat.Profile report Suspend activitatea profilerului dup care genereaz un raport n format HTML pe care l afieaz n browserul Web. Basename Salveaz raportul n fiierul basename din directorul curent.Profile plot Suspend activitatea profiler-ului dup care afieaz un grafic n fereastra figur cu funciile care consum majoritatea timpului de execuie.Profile resume Restarteaz profiler-ul fr a terge statisticile nregistrate anterior.Profile clear terge statisticile nregistrate.Profile off Termin activitatea profiler-ului.Profile status Afieaz o structur care conine starea curent a profiler-ului.stats = profile('info') Suspend profiler-ul i afieaz o structur cu rezultatele activitii de analiz. Exemplu de utilizare a Profiler-ului 1. Se starteaz profiler-ul:

profile on -detail builtin -history Opiunea -detail builtin determin profilerul s ntocmeasc statistici i pentru funciile built-in.

2. Se execut un fiier .m . n exemplu este preluat programul care ruleaz modelul LotkaVolterra pentru populaii tip prdtor-prad (lotkademo pentru demo). [t,y] = ode23('lotka',[0 2],[20;20]); 3. Se genereaz un raport i se salveaz rezultatele n fiierul lotkaprof.

profile report lotkaprof 4. Se restarteaz profiler-ul fr tergerea statisticilor existente.

profile resume 5. Se oprete profiler-ul.

profile off

Vizualizarea rezultatelor A. Rapoarte Pentru afiarea unui raport cu rezultatele statistice obinute se tasteaz profile report Raportul care rezult apare n fereastra browserului Web i ncepe cu un rezumat al raportului din care se pot accesa un raport detaliat i un raport al apelrilor de funcii (o cronic). Raportul rezumat. n figura urmtoare este prezentat raporul rezumat pentru exemplul LotkaVolterra. Raportul detaliat. Acest raport furnizeaz detalii despre funciile de tip printe i copil ale unei funcii. Este prezentat raportul detaliat pentru funcia lotka din exemplul considerat. Raportul apelrilor de funcii. Acest raport afieaz secvena exact a funciilor apelate. Pentru a vizualiza acest raport, trebuie startat profiler-ul cu opiunea -history. profile on -history Este prezentat un exemplu de astfel de raport.

B. Reprezentarea grafic a rezultatelor Profiler-ului Pentru a obine o reprezentare grafic trebuie s tastm: profile plot n fereastra grafic va apare un grafic de forma din figura urmtoare:

5. MATRICI, ALGEBR LINIAR, POLINOAME, TEHNICI DE INTERPOLARE

5.1. Matricile n MATLAB Prin matrice nelegem un tablou bi-dimensional de numere reale sau complexe. n capitolul de Fundamente ale programrii n MATLAB a fost prezentat modul de introducere a matricilor i au fost analizate cteva operaii simple cu matrici. MATLAB-ul lucreaz direct cu multe operaii matriceale: aritmetica matricilor, ecuaii liniare, valori proprii, factorizri etc.

Funciile de algebr liniar sunt localizate n directorul matfun. n continuare sunt prezentate cteva din funciile care lucreaz cu matrici.

CategoriaFunciaDescriereAnaliza matricealnormNorma unei matrice sau a unui vector.normestEstimeaz norma-2 a matricei.rankRangul matricei.detDeterminant.traceSuma elementelor de pe diagonal.nullSpaiul Nul.orthOrtogonalizare.subspaceUnghiul dintre 2 subspaii.Ecuaii liniare\ i / Utilizate la calculul soluiilor ecuaiilor liniare.invInversa matricei.condNumrul de condiie pentru inversare.cholFactorizarea Cholesky.luFactorizarea LU.qrDecompoziia ortogonaltriunghiular.pinvPseudoinversa.lscovCele mai mici ptrate cu covarian cunoscut.Valori proprii i valori singulareeigValori proprii i vectori proprii.svdDecompoziia n valori singulare.polyPolinomul caracteristic.hessForma Hessenberg.qzFactorizarea QZ.schurDecompoziia Schur.Funcii de matriceexpmExponeniala de matrice.logmLogaritmul de matrice.sqrtmRdcina ptrat de matrice.funmEvaluarea unei funcii generale de matrice. Operaiunile elementare cu matrici au fost deja prezentate (adunarea matricilor, nmulirea acestora, transpusa unei matrice, funciile sum, diag etc.).

n continuare sunt prezentate cteva matrici speciale utile n toate tipurile de reprezentri matematice:

Matricea identitate (unitate)

Este o matrice cu elementele de pe diagonala principal egale cu 1 iar restul elementelor sunt nule. Notaia matematic I provine de la denumirea matricii i nu este folosit n MATLAB, pentru evitarea unor confuzii. Se utilizeaz sintaxa: eye(m,n) Aceast funcie returneaz o matrice identitate mxn. Dac se folosete: eye(n) atunci este vorba de o matrice identitate ptratic nxn.

- Matricea ones Este o matrice care are toate elementele egale cu 1. Forme posibile: ones(n) este o matrice nxn cu elemente de 1 ones(m,n) sau ones([m,n]) sunt matrici mxn cu elemente de 1. ones(size(A)) are aceeai dimensiune cu o matrice A i are elemente de 1

- Matricea zeros Este o matrice care are toate elementele egale cu 0. Forme posibile: zeros(n) este o matrice nxn de zerouri zeros(m,n) sau zeros([m,n]) sunt matrici mxn de 0 zeros(size(A))are aceeai dimensiune cu o matrice A i are elemente de 0

5.2. Rezolvarea ecuaiilor liniare Una din cele mai importante probleme ale calculului din domeniul tehnic este soluionarea sistemelor de ecuaii liniare. Definirea problemei este pe scurt urmtoarea:

Dac se dau dou matrici A i B, exist o matrice unic X astfel nct AX = B sau XA = B ? MATLAB utilizeaz notaia din cazul scalar i pentru descrierea soluiei unui sistem de ecuaii liniare. Cele dou simboluri utilizate n cazul scalar al diviziunii (mpririi) i anume slash, /, i backslash, \, sunt folosite pentru definirea soluiei: X = A\B este soluia ecuaiei matriceale AX = B. X = B/A este soluia ecuaiei matriceale XA = B.

n practic, ecuaiile liniare de forma AX = B sunt mai des ntlnite.

Deoarece matricea A, care conine de fapt coeficienii sistemului, poate s nu fie ptratic ci de tipul general mxn, exist trei cazuri posibile: m = n. Sistem ptratic. Se poate cuta o soluie exact. m > n. Sistem supradeterminat (incompatibil). Se caut o soluie de tip cele mai mici ptrate. m < n.Sistem nedeterminat. Se poate cuta o soluie cu cel mult m componente nenule. n multe cazuri MATLAB-ul d un diagnostic (o soluie) automat prin examinarea coeficienilor matricelor. Cteva din aceste cazuri: Permutarea matricilor triunghiulare Matrici simetrice, pozitiv definite Matrici ptratice nesingulare Sisteme rectangulare supradeterminate Sisteme rectangulare nedeterminate

Sisteme ptratice Cel mai simplu caz este cel corespunztor unei matrice ptratice A i a unui vector coloan b. Soluia x = A\b are aceeai dimensiune ca b. Dac A i B sunt ptratice de aceleai dimensiuni atunci soluia X = A\B are aceeai dimensiune ca A sau B. Observaie: Dac matricea A este singular (determinant nul) atunci soluia ecuaiei AX = B nu exist sau nu este unic.

Sisteme supradeterminate (incompatibile) Aceste tipuri de sisteme sunt des ntlnite n diverse situaii, cum ar fi de exemplu aproximarea unor curbe din date experimentale. Sisteme nedeterminate Sistemele liniare nedeterminate au mai multe necunoscute dect ecuaii. Dac exist i constrngeri (restricii) suplimentare, atunci este vorba de o problem de programare liniar. Operatorul backslash din MATLAB permite cutarea soluiei n cazul fr restricii. Soluia nu este niciodat unic. MATLAB-ul gsete o soluie de baz (care are cel mult m componente nenule). Gsirea soluiei particulare se bazeaz pe factorizarea QR (decompoziia ortogonal-triunghiular).

Vom prezenta un exemplu (care utilizeaz funcia matriceal random rand). R = fix(10*rand(2,4)) R= 6 3 8 5 7 4 3 1

b = fix(10*rand(2,1)) b= 1 2 Sistemul liniar Rx = b implic dou ecuaii cu 4 necunoscute. Soluia se poate afia n format raional (coeficienii sunt numere ntregi). Soluia particular se obine astfel: format rat p = R\b p= 0 5/7 0

-11/7

Soluia complet a sistemului nedeterminat se obine prin adugarea unui vector arbitrar din spaiul nul folosind funcia null: Z = null(R,'r') Z= -1/2 -1/2 1 0 -7/6 1/2 0 1

Orice vector de forma x=p+Z*q pentru q vector arbitrar satisface R*x=b. 5.3. Inverse i determinani Dac matricea A este ptratic i nesingular, ecuaiile AX = I i XA = I au aceeai soluie X. Aceast soluie este chiar inversa lui A, notat matematic prin A-1, i poate fi calculat cu funcia inv. Determinantul unei matrice se poate calcula cu funcia det (trebuie acordat atenie problemelor de scalare i rotunjire care apar n calcule).

Exemple:

A=[1 1 1;1 2 3;1 3 6];

d = det(A) d= 1

X = inv(A) X= 3 -3 -3 1

5 -2

1 -2

Pseudoinverse Matricile dreptunghiulare (rectangulare) nu au inverse sau determinani. Atunci cel puin una din ecuaiile AX = I sau XA = I nu are soluie. Se poate utiliza n acest caz o pseudoinvers care poate fi calculat cu funcia pinv:

A1=[A;[1 3 5]]

A1 = 1 1 1 1 1 2 3 3 1 3 6 5

X=pinv(A1)

X= 1.5000 -0.0000 1.0000 -1.5000 -0.8333 0.6667 -2.0000 2.1667 0.1667 -0.3333 1.0000 -0.8333

5.4. Funcii de matrice. Valori proprii Puteri de matrice Dac A este o matrice ptratic i p este un numr ntreg pozitiv, atunci A^p multiplic pe A cu ea nsi de p ori.

X = A^2 X=

6 10

6 14 25 10 25 46

Dac A este ptratic i nesingular, atunci A^(-p) multiplic pe inv(A) cu ea nsi de p ori.

Y=A^(-2) Y= 19.0000 -26.0000 10.0000 -26.0000 38.0000 -15.0000 10.0000 -15.0000 6.0000

Ridicarea la putere element cu element se face utiliznd operatorul (funcia) .^. De exemplu:

X = A.^2 A= 1 1 1 1 4 1 9

9 36

Rdcina ptrat de matrice Funcia sqrtm(A) permite calculul lui A^(1/2) printr-un algoritm mai precis dect utilizarea puterii de matrice.

Exponeniala de matrice Un sistem de ecuaii difereniale ordinare cu coeficieni constani poate fi scris:

unde x = x(t) este un vector de funcii de timp i A este o matrice independent de timp.

Soluia sistemului poate fi scris prin intermediul exponenialei de matrice

Funcia expm(A)permite calculul exponenialei de matrice.

Valori proprii O valoare proprie i un vector propriu ale unei matrice ptratice A sunt un scalar i un vector v care satisfac egalitatea

Cu valorile proprii pe diagonala unei matrice de tip diagonal i cu vectorii proprii corespunztori care formeaz coloanele unei matrice V vom avea

Dac V este nesingular obinem decompoziia (descompunerea) pe baza valorilor proprii:

Exemplu:

A=[-1 -3 1;2 -2 -1;0 1 -3] A= -1 -3 1

2 -2 -1 0 1 -3

lambda=eig(A) lambda = -1.7593 + 2.4847i -1.7593 - 2.4847i

-2.4814

Lambda va fi un vector care conine valorile proprii ale matricei. Dac funcia eig este utilizat cu dou argumente de ieire vom obine vectorii proprii i valorile proprii (acestea sub forma diagonal):

[V,D]=eig(A)

V= 0.2233 + 0.6835i 0.2233 - 0.6835i 0.3160 0.6481 - 0.0862i 0.6481 + 0.0862i 0.4368 0.0765 - 0.2227i 0.0765 + 0.2227i 0.8422

D= -1.7593 + 2.4847i 0 0 0 0 0

-1.7593 - 2.4847i 0 -2.4814

Observaie: Toolbox-ul Symbolic Math extinde capacitatea MATLAB-ului prin conectarea la Maple, care este un sistem de calcul algebric performant. Una din funciile toolbox-ului permite calculul formei canonice Jordan.

[X,J]=jordan(A) X= 0.1121 0.1549 0.2987 0.4440 + 0.1691i 0.4440 - 0.1691i -0.0775 + 0.4250i -0.0775 - 0.4250i -0.1494 + 0.0434i -0.1494 - 0.0434i

J= -2.4814 0 0

0 0

-1.7593 - 2.4847i 0

-1.7593 + 2.4847i

Forma canonic Jordan este un concept teoretic important, dar nu este indicat folosirea n cazul matricilor mari sau pentru matricile cu elemente afectate de erori de rotunjire sau de alte incertitudini. MATLAB-ul poate folosi n astfel de cazuri descompunerea Schur (funcia schur).

5.5. Reprezentarea polinoamelor. Interpolarea Polinoame MATLAB-ul furnizeaz funcii pentru operaii polinomiale standard cum ar fi calculul rdcinilor, evaluarea polinoamelor, derivarea etc. O parte din aceste operaii precum i modul de reprezentare a polinoamelor ca vectori au fost descrise n capitolul de Fundamente de programare. Funciile polinomiale se afl n directorul polyfun:

FuncieDescriereconvMultiplic polinoamele.deconvmparte polinoamele.polyReturneaz coeficienii dac se dau rdcinile; Polinomul caracteristic.polyderCalcul derivatei unui polinom.polyfitGsirea coeficienilor unui polinom din aproximarea unui set de date.polyvalEvaluarea unui polinom.polyvalmEvaluarea unui polinom cu argument matriceal.residueDescompunere n fracii simple.rootsGsirea rdcinilor unui polinom. Dup cum s-a precizat deja, MATLAB-ul reprezint polinoamele ca vectori linie care conin coeficienii polinoamelor n ordinea descresctoare a puterilor. Funciile uzuale care opereaz cu polinoame au fost prezentate (de exemplu roots). n continuare sunt parcurse alte cteva exemple utile.

Funcia poly returneaz coeficienii unui polinom dac dispunem de rdcinile acestuia (este o funcie invers fa de roots): p=[1 -1 2 4 1]; r=roots(p) r= 1.0529 + 1.7248i 1.0529 - 1.7248i -0.7995

-0.3063

coef=poly(r) coef = 1.0000 -1.0000 2.0000 4.0000 1.0000

O alt utilizare a funciei poly este aceea de calculare a coeficienilor polinomului caracteristic al unei matrice: A A= -1 -3 1

2 -2 -1 0 1 -3

poly(A) ans = 1 6 18 23

Rdcinile acestui polinom sunt chiar valorile proprii ale matricii A.

Funcia polyval evalueaz un polinom pentru o valoare specificat a argumentului.

Funcia polyvalm permite evaluarea unui polinom n sens matriceal. n acest caz polinomul p din exemplul anterior: p(x) = x4 x3 + 2x2 + 4x + 1 devine p(X) = X4 X3 + 2X2 + 4X + I, unde X este o matrice ptratic i I matricea unitate. Exemplu: C=polyvalm(p,A) C= -75 -61 81 58 -130 75

52 -23 49

Funciile conv i deconv implementeaz operaiile de nmulire i mprire a polinoamelor.

Exemple: Fie a(x) = x2 + 2x +3 i b(x) = 4x2 + 5x + 6.

a = [1 2 3]; b = [4 5 6]; c = conv(a,b) c= 4 13 28 27 18

[q,r] = deconv(c,a) q= 4 r= 0 0 0 0 0 5 6

Funcia polyder permite calculul derivatei unui polinom.

Exemplu: p=[1 -1 2 4 1]; pderivat=polyder(p) pderivat = 4 -3 4 4

Funcia polyfit gsete coeficienii unui polinom (o curb) care aproximeaz un set de date n sensul algoritmului celor mai mici ptrate:

p = polyfit(x,y,n)

x i y sunt vectorii care conin setul de date iar n este ordinul polinomului ai crui coeficieni vor fi furnizai la apelarea funciei.

Exemplu:

x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4]; p = polyfit(x,y,3) p= -0.1917 31.5821 -60.3262 35.3400

Pentru plotarea rezultatului se utilizeaz mai nti funcia polyval pentru o trasare ct mai exact a graficului polinomului i apoi se ploteaz estimarea versus datele reale pentru comparaii.

x2 = 1:.1:5; y2 = polyval(p,x2); plot(x,y,'o',x2,y2)

Funcia residue se utilizeaz pentru descompunerea n fracii simple. Se aplic n cazul raportului a dou polinoame b i a,

unde r este un vector coloan, p tot un vector coloan care conine polii iar k un vector linie cu termenii direci. Exemplu:

b = [-4 8];

a = [1 6 8]; [r,p,k] = residue(b,a) r= -12 8 p= -4 -2 k= []

Dac se folosesc trei argumente de intrare (r, p, i k), funcia residue asigur conversia napoi n forma polinomial:

[b2,a2] = residue(r,p,k) b2 = -4 a2 = 1 6 8 8

Interpolarea Interpolarea este un proces de estimare a valorilor dintre date (puncte) cunoscute. Aplicaiile interpolrii sunt numeroase n domenii cum ar fi procesarea numeric a semnalelor i imaginilor.

MATLAB-ul dispune de mai multe tehnici de interpolare, alegerea unei metode sau alteia fcndu-se n funcie de acurateea necesar, de viteza de execuie i de gradul de utilizare a memoriei. Funciile de interpolare se afl n directorul polyfun.

FuncieDescrieregriddataInterpolare pe suprafee.interp1Interpolare monodimensional.interp2Interpolare bi-dimensional.interp3Interpolare tridimensional.interpftInterpolare mono utiliznd metoda FFT.splineInterpolare spline (cubic). Compararea unor metode de interpolare bi-dimensional

n continuare este preluat i prezentat (informativ) un exemplu de folosire a unor metode de interpolare bi-dimensional pentru o matrice de date 7 x 7. 1. Generarea funciei peaks (cu rezoluie mic):

[x,y] = meshgrid(-3:1:3); z = peaks(x,y); surf(x,y,z)

2.

Generarea unei suprafee mesh fine pentru interpolare:

[xi,yi] = meshgrid(-3:0.25:3); 3. Interpolarea cu metoda celei mai apropiate vecinti:

zi1 = interp2(x,y,z,xi,yi,'nearest'); 4. Interpolarea cu metoda biliniar:

zi2 = interp2(x,y,z,xi,yi,'bilinear'); 5. Interpolarea cu metoda bicubic:

zi3 = interp2(x,y,z,xi,yi,'bicubic');

6.

Compararea graficelor corespunztoare diferitelor metode de interpolare:

7.

Compararea contururilor suprafeelor n cazul diferitelor metode de interpolare:

Se observ c metoda bicubic produce cele mai netede contururi. O metod cum ar fi cea a celor mai apropiate vecinti este preferat ns n anumite aplicaii, cum ar fi cele medicale unde nu trebuie generate date noi.

6. REPREZENTAREA FUNCIILOR. ECUAII DIFERENIALE 6.1. Reprezentarea i plotarea funciilor matematice Reprezentarea funciilor matematice

Funciile matematice uzuale sunt furnizate de MATLAB ca funcii buit-in (cum ar fi sin, cos, log10, log, atan etc.). Pentru reprezentarea altor funcii matematice se utilizeaz exprimarea n fiiere tip .m .

De exemplu, o funcie cum este urmtoarea:

poate fi creat ntr-un fiier MATLAB de tip function i poate fi utilizat ulterior ca intrare n alte funcii (aa-numitele funcii de funcii a se vedea paragraful 2.3). Fiierul care descrie aceast funcie a mai fost prezentat n paragraful 2.3:

function y = humps(x) y = 1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;

O alt posibilitate este crearea la nivelul liniei de comand a unui obiect inline prin folosirea unei expresii tip ir de caractere:

f=inline(`1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6'); Pentru a evalua aceast funcie f n 2.0 tastm simplu:

f(2.0)

ans = -4.8552

Alt exemplu:

f = inline('y*sin(x)+x*cos(y)','x','y')

f(pi,2*pi)

ans = 3.1416

Plotarea funciilor Pentru reprezentarea grafic a funciilor se poate utiliza funcia fplot. Se pot controla limitele axelor de reprezentare grafic. Exemplu: trasarea graficului funciei humps pentru limitele *-5 5] ale axei x:

fplot('humps',[-5 5])

Dac dorim i precizarea limitelor de reprezentare pe axa y (realizarea unui zoom) folosim comanda:

fplot('humps',[-5 5 -10 25])

Un alt exemplu de folosire direct a funciei fplot: fplot('2*sin(x+3)',[-1 1]) Se poate realiza i reprezentarea mai multor funcii pe acelai grafic: fplot('[2*sin(x+3), humps(x)]',[-1 1])

6.2. Minimizarea funciilor i gsirea zerourilor MATLAB-ul furnizeaz o serie de funcii de nivel nalt care realizeaz sarcini de optimizare a funciilor. Aceste funcii sunt grupate n principal pe urmtoarele domenii:

Minimizarea funciilor de o variabil Minimizarea funciilor de mai multe variabile Setarea opiunilor de minimizare Gsirea zerourilor unor funcii Pentru exemplificare vom considera minimizarea unei funcii de o singur variabil i gsirea zerourilor pentru aceast funcie.

Minimizarea unei funcii Pentru gsirea unui minim local al unei funcii scrise ntr-un fiier function, se utilizeaz funcia fminbnd. Relum aici exemplul din paragraful 2.3: pentru gsirea minimului funciei humps n intervalul (0.3, 1) folosim instruciunea:

x = fminbnd('humps',0.3,1) x= 0.6370

Dac dorim o afiare detaliat a pailor fcui de prodedura de minimizare se utilizeaz urmtoarea sintax:

x = fminbnd('humps',0.3,1,optimset('Display','iter'))

Func-count 1 2

f(x) 12.9098 13.7746

Procedure initial golden

0.567376 0.732624

3 4 5 6 7 8 9

0.465248 0.644416 0.6413 0.637618 0.636985 0.637019 0.637052

25.1714 11.2693 11.2583 11.2529 11.2528 11.2528 11.2528

golden parabolic parabolic parabolic parabolic parabolic parabolic

x= 0.6370

Gsirea zerourilor Funcia fzero permite gsirea zerourilor unei funcii (este vorba de fapt de o ecuaie cu o singur necunoscut). Dac se d un punct de plecare x0 pentru procedura de cutare, fzero va cuta un interval n jurul acestui punct n care funcia schimb semnul. Dac un astfel de interval este gsit, fzero returneaz valoarea pentru care funcia schimb semnul (adic zeroul), iar dac un astfel de interval nu este gsit returneaz NaN. Alt variant permite cutarea ntr-un interval specificat de utilizator.

Exemplu: gsirea unui zerou al funciei humps n apropiere de -0.2:

a = fzero('humps',-0.2) a= -0.1316

Pentru verificare evalum funcia n punctul -0.1316 i gsim ntr-adevr o valoare foarte aproape de zero:

humps(a) ans = 8.8818e -16

Se poate folosi i varianta cu interval de cutare precizat de utilizator. n continuare este prezentat aceast variant plus folosirea unor opiuni suplimentare pentru afiarea detaliat a informaiilor despre procedur i a pailor:

options = optimset('Display','iter'); a = fzero('humps',[-1 1],options)

Func-count 1 2 -1 1

f(x)

Procedure initial initial interpolation bisection interpolation bisection interpolation interpolation interpolation interpolation interpolation interpolation interpolation

-5.13779 16

3 -0.513876 4 0.243062

-4.02235 71.6382 -3.83767 0.414441 -0.423446

5 -0.473635 6 -0.115287 7 -0.150214

8 -0.132562 -0.0226907 9 -0.131666 -0.0011492 10 -0.131618 1.88371e-007 11 -0.131618 -2.7935e-011 12 -0.131618 8.88178e-016 13 -0.131618 -9.76996e-015 Zero found in the interval: [-1, 1].

a=

-0.1316

6.3. Integrarea numeric Aria subgraficului unei funcii F(x) poate fi determinat prin integrarea numeric, proces care se numete quadratur (quadrature). Pentru rezolvarea integrrii numerice n cazul monodimensional exist dou funcii MATLAB: quad, care folosete un algoritm de tip Simpson quad8, care utilizeaz un algoritm de tip Newton

Exemplu: pentru integrarea funciei humps ntre 0 i 1 folosim comanda

q = quad('humps',0,1) q= 29.8583

Funciile quad sau quad8 permit i alte argumente de intrare care specific eroarea tolerat pentru integrare i alte opiuni (a se vedea cu help).

Exemplu de integrare numeric: calculul lungimii unei curbe Vom considera o curb dat de ecuaiile:

cu

O plotare tri-dimensional a acestei curbe poate fi obinut cu

t = 0:0.1:3*pi;

plot3(sin(2*t),cos(t),t)

Lungimea acestei curbe este dat de formula urmtoare:

Pentru calculul lungimii trebuie integrat numeric integrala de mai sus. Pentru aceasta se creeaz mai nti o funcie MATLAB care descrie integrandul pe care o numim fcurba:

function f = fcurba(t) f = sqrt(4*cos(2*t).^2 + sin(t).^2 + 1);

i apoi se integreaz cu ajutorul funciei quad:

lungime = quad('fcurba',0,3*pi) lungime = 1.7222e+01

6.4. Rezolvarea ecuaiilor difereniale MATLAB-ul dispune de metode i funcii care pot rezolva problema condiiilor iniiale (Cauchy) ale sistemelor de ecuaii difereniale ordinare (ODE Ordinary Differential Equations). n tabelul urmtor sunt prezentate succint cteva din aceste funcii.

Categorie Funcie Descriere Funcii care rezolv ODEode45 Rezolv ecuaii difereniale nonstiff, metod de ordin mediu. ode23Rezolv ecuaii difereniale nonstiff, metod de ordin sczut.

ode113Rezolv ecuaii difereniale nonstiff, metod de ordin variabil. ode15sRezolv ecuaii difereniale stiff i ecuaii algebrice difereniale, metod de ordin variabil. ode23sRezolv ecuaii difereniale stiff, metod de ordin sczut. ode23tEcuaii difereniale stiff i ecuaii algebrice difereniale, metoda trapezelor. ode23tbRezolv ecuaii difereniale stiff, metod de ordin sczut.Opiuni ODEodeset Creeaz sau schimb opiuni de structur ale ODE. odeget Permite obinerea parametrilor din opiunile ODE.Funcii de ieire ODEodeplotPlotarea soluiilor ODE (n funcie de timp). odephas2Trasarea planului fazelor. odephas3Trasarea spaiului fazelor (tri-dimensional). odeprintPermite tiprirea soluiei ODE n fereastra de comand. Observaie: La ecuaiile difereniale ordinare de tip stiff (rigide) soluiile pot avea variaii foarte rapide n timp n raport cu intervalul de timp de integrare i este necesar folosirea unor pai de integrare foarte mici, ceea ce nu mai este indicat la ecuaiile nonstiff.

Exemplu de rezolvare: ecuaia van der Pol Ecuaia van der Pol este un exemplu clasic de ecuaie diferenial:

unde > 0 este un parametru scalar. Pentru implementarea algoritmului de rezolvare este necesar rescrierea ecuaiei de ordinul 2 ca un sistem de dou ecuaii difereniale de ordinul 1. Pentru aceasta se introduce variabila y2 care este derivata n raport cu timpul a variabilei y1 . Vom avea

Pentru a reprezenta n MATLAB acest sistem de ODE n scopul gsirii soluiilor, trebuie scris n primul rnd un fiier care descrie sistemul (un fiier de tip function). Un fiier ODE accept cel puin dou argumente, t i y. Pentru ecuaia van der Pol cu = 1, fiierul este urmtorul (y1 i y2 devin y(1) i y(2)):

function dy = vdp1(t,y) dy = [y(2); (1-y(1)^2)*y(2)-y(1)];

La pasul urmtor, dup ce sistemul de ecuaii a fost scris, se poate utiliza una din metodele de rezolvare prezentate n tabelul anterior. Trebuie furnizat un interval de timp pentru care se dorete calculul soluiilor i bineneles condiiile iniiale. Pentru exemplul van der Pol, se poate apela la ode45. Dac intervalul de timp este *0 20+ iar condiiile iniiale y(1)=2 i y(2)=0 vom avea

[t,y] = ode45('vdp1',[0 20],[2; 0]);

Ieirea *t,y+ este un vector coloan care conine vectorul timp t i soluia de tip tablou y. Fiecare linie din y corespunde unui element (moment) din vectorul timp. Pentru trasarea graficului cu soluia se folosete comanda plot:

plot(t,y(:,1),'-',t,y(:,2),'- -') title('Solution of van der Pol Equation, mu = 1'); xlabel('time t'); ylabel('solution y'); legend('y1','y2')

Se obine urmtorul grafic care conine evoluiile celor dou componente ale soluiei n timp:

Dac se dorete i trasarea planului fazelor se pot folosi liniile de comand:

options=odeset('OutputFcn','odephas2'); [t,y] = ode45('vdp1',[0 20],[2; 0],options);

i obinem planul fazelor (este vorba de trasarea componentei y(1) versus componenta y(2)):

7. PROGRAMAREA N LIMBAJUL MATLAB

7.1. Fiiere MATLAB Fiierele care conin cod MATLAB sunt numite M-files sau fiiere .m . Dup cum s-a precizat n capitolul de Fundamente ale programrii n MATLAB, aceste fiiere pot fi funcii (functions) care accept argumente de intrare i furnizeaz ieiri, sau pot fi fiiere script care execut o serie de instruciuni MATLAB. Pentru ca MATLAB-ul s recunoasc un fiier ca fiier M-file trebuie ca numele acestuia s se termine cu extensia .m.

Fiierul .m poate fi creat cu un editor de text i apoi poate fi folosit ca orice funcie sau comand MATLAB:

Caracteristicile celor dou tipuri de fiiere sunt prezentate n tabelul urmtor: Fiiere ScriptFiiere FunctionNu acccept argumente de intrare i nu returneaz ieiri. Accept argumente de intrare i returneaz ieiri. Opereaz cu datele din workspace. Variabilele interne ale funciei sunt locale (implicit). Utile pentru automatizarea unei serii de pai care trebuie executai de multe ori. Utile pentru extinderea limbajului MATLAB pentru diverse aplicaii. Script-uri Fiierele script sunt cele mai simple fiiere MATLAB, nu au argumente de intrare sau de ieire i sunt utile pentru executarea secvenial a unor calcule care altfel ar trebui executate n mod repetat de la linia de comand. Script-urile opereaz cu datele din workspace sau pot crea date noi. Aceste date sunt disponibile dup terminarea execuiei fiierului.

Prile componente ale unui fiier de tip function O funcie .m are urmtoarele pri componente: Linia de definire a funciei Linia de prim help H1

Textul Help-ului Corpul funciei Comentarii

Linia de definire Aceast linie informeaz MATLAB-ul c fiierul conine o funcie i specific argumentele. Exemplu:

Linia H1 Linia H1 este o linie de comentariu care ncepe cu semnul "%" i furnizeaz prima linie text atunci cnd utilizatorul tasteaz help function_name la prompterul MATLAB. Textul Help-ului Se poate crea un help online prin introducerea uneia sau mai multor linii de comentariu dup linia H1, fiecare linie ncepnd cu "%". Corpul funciei Corpul funciei conine toate instruciunile n cod MATLAB care permit efectuarea calculelor i asigneaz valori argumentelor de ieire. Declaraiile din corp pot conine apelri de funcii, instruciuni de salt, intrri/ieiri interactive, calcule etc. Comentarii O linie de comentariu ncepe dup cum s-a precizat cu semnul "%" i poate fi plasat oriunde ntr-un fiier. Pot fi adugate linii albe oriunde n fiier, acestea fiind ignorate.

7.2. Tipuri de date i operatori Tipuri de date MATLAB-ul are ase tipuri fundamentale de date (sau clase), fiecare putnd fi considerat ca tablou multidimensional. Cele ase clase sunt: double, char, sparse, storage, cell i struct. Versiunile bidimensionale ale acestor tablouri sunt numite matrici i de aici provine i numele de MATLAB.

n tabelul urmtor sunt prezentate detaliat tipurile de date: ClasaExempleDescriereArrayTip de date virtual.Cell,17'hello'eye(2)- Tablou tip celul. Elementele celulei conin alte tablouri. Char'Hello'Tablou de tip caracter (sau ir de caracterestring); fiecare caracter are 16 bii lungime. Double*1 2;3 4+ 5+6ITablou numeric n dubl precizie (cel mai obinuit tip de variabil MATLAB).NumericTip de date virtual.sparseSpeye(5)Matrice de tip sparse n dubl precizie (doar 2-D). Tablourile de tip sparse stocheaz matrici cu doar cteva elemente nenule ntr-o fraciune din spaiul necesar unei matrici normale echivalente.storageTip de date virtual.structa.day = 12; a.color = 'Red'; a.mat = magic(3);Tablou tip structur, care conine nume de cmpuri, cmpuri care conin alte tablouri.uint8Uint8(magic(3))Tablou de numere ntregi fr semn pe 8 bii.User ObjectInline('sin(x)')Tip de date definit de utilizator. Operatori Operatorii MATLAB pot fi clasificai n trei categorii: Operatori aritmetici Operatori relaionali care compar operanzii cantitativ Operatori logici

Operatori aritmetici +Adunare:Operatorul dou puncte-Scdere.^Putere.*nmulire.'Transpusa./mprire la dreapta'Transpusa complex conjugat.\mprire la stnga*nmulire de matrici+Plus unar/mprire matriceal la dreapta-Minus unar\mprire matriceal la stnga^Putere de matrice Cu excepia unor operatori matriceali, operatorii aritmetici lucreaz cu elementele corespondente ale unor tablouri de dimensiuni egale. Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n care unul dintre ei este scalar. n acest caz MATLAB-ul aplic scalarul fiecrui element al celuilalt operand (proprietatea de expansiune scalar).

Operatori relaionali <Mai mic<=Mai mic sau egal>Mai mare>=Mai mare sau egal==Egal cu~=Diferit de Operatorii relaionali compar elementele corespondente ale unor tablouri de dimensiune egal. Operatorii relaionali lucreaz totdeauna element cu element. Exemplu:

A = [2 7 6;9 0 5;3 0.5 6]; B = [8 7 0;3 2 5;4 -1 7];

A == B ans = 0 0 0 1 0 0 0 1 0

Operatori logici &AND (I)|OR (SAU)~NOT (NU) O expresie care utilizeaz operatorul & este adevrat dac ambii operanzi sunt adevrai. n termeni numerici, expresia este adevrat dac ambii operanzi sunt nenuli. Exemplu: u = [1 0 2 3 0 5]; v = [5 6 1 0 0 7]; u&v ans = 1 0 1 0 0 1

O expresie care utilizeaz operatorul | este adevrat dac unul dintre operanzi este logic adevrat sau dac ambii operanzi sunt adevrai. n termeni numerici, expresia este fals dac ambii operanzi sunt nuli. Exemplu: u|v ans = 1 1 1 1 0 1

O expresie care utilizeaz operatorul NOT, ~, neag operandul. n termeni numerici, orice operand nenul devine nul i orice operand nul devine unu. Exemplu:

~u ans = 0 1 0 0 1 0

Operatorii logici lucreaz cu elementele corespondente ale unor tablouri de dimensiuni egale. Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n care unul dintre ei este scalar. n acest caz, ca i la operatorii aritmetici, MATLAB-ul aplic scalarul fiecrui element al celuilalt operand.

Funcii logice n plus fa de operatorii logici MATLAB-ul furnizeaz i funcii logice: FuncieDescriere ExemplexorRealizeaz sau exclusiv. Returneaz logic adevrat dac unul din operanzi este adevrat i cellalt fals. n termeni numerici, returneaz 1 dac un operand este nenul i cellalt este zero. a = 1; b = 1; xor(a,b) ans = 0allReturneaz 1 dac toate elementele unui vector sunt adevrate sau nenule. Opereaz i cu matrici (pe coloane). u = [0 1 2 0]; all(u) ans = 0

A = [0 1 2;3 5 0]; all(A) ans = 0 1 0anyReturneaz 1 dac oricare din elementele argumentului sunt adevrate sau nenule; n caz contrar returneaz 0. v = *5 0 8+; any(v) ans =

1Alte funcii: isnan, isinf, find (a se folosi help pentru detalii).

Prioritatea operatorilor Deoarece se pot construi expresii cu diverse tipuri de operatori, nivelurile de prioritate determin ordinea n care sunt evaluate expresiile. n cadrul fiecrui nivel, operatorii au prioritate egal i sunt evaluai de la stnga la dreapta. Regulile de prioritate sunt prezentate n continuare, de la nivelul de prioritate cel mai mare spre cel mai mic.

OperatorNivel de prioritate()Prioritate maxim~ (negare).' .^ ' ^ + (plus unar) - (minus unar) .* ./ .\ * / \+ (adunare) - (scdere): < <= > >= == ~=& |Prioritate minim 7.3. Instruciuni de salt i bucle n MATLAB exist mai multe tipuri de instruciuni de control al buclelor: if, mpreun cu else i elseif execut un grup de instruciuni pe baza unei condiii logice.

switch, case i otherwise execut diverse grupuri de instruciuni n funcie de valoarea unei anumite condiii logice. while execut un grup de instruciuni de un numr nedefinit de ori, pe baza unei condiii logice. for execut un grup de instruciuni de un numr fixat de ori. break termin execuia pentru o bucl for sau while. try...catch schimb controlul buclei dac o eroare este detectat n timpul execuiei. return provoac ntoarcerea la funcia care a apelat prcedura.

Toate instruciunile de salt folosesc comanda end pentru a indica sfritul blocului respectiv.

Exemple de utilizare a unor instruciuni de salt:

Instruciunile if i elseif:

if n < 0

% Daca n este negativ afiseaza un mesaj de eroare.

disp('Intrarea trebuie sa fie pozitiva');

elseif rem(n,2)= =0

%Daca n este pozitiv si par, imparte-l la 2.

A = n/2;

else

A = (n+1)/2;

%Daca n este pozitiv si impar incrementeaza si imparte la 2

end

Instruciunea for:

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

7.4. Evaluarea datelor de tip caracter Evaluarea datelor de tip caracter asigur putere i flexibilitate limbajului MATLAB.

Funcia eval

Funcia eval evalueaz un ir de caractere care conine o expresie, o declaraie sau un apel de funcie. n cea mai simpl form, sintaxa este urmtoarea:

eval('string')

Exemplu: evaluarea unei expresii folosite la generarea unei matrice Hilbert de ordinul n: t = '1/(i+j-1)'; for i = 1:n for j = 1:n a(i,j) = eval(t); end end Alt exemplu de utilizare a funciei eval pentru o declaraie: eval('t = clock')

Funcia feval Funcia feval difer de eval prin faptul c execut o funcie a crui nume este ntr-un ir de caractere. Se poate folosi feval i funcia input pentru a alege din mai multe sarcini definite de fiiere .m . Exemplu:

fun = ['sin'; 'cos'; 'log']; k = input('Choose function number: '); x = input('Enter value: '); feval(fun(k,:),x)

Este indicat folosirea funciei feval n locul funciei eval, deoarece execuia este mai rapid. Construirea irurilor de caractere pentru evaluare

Se pot concatena irurile de caractere pentru a crea expresii de intrare necesare funciei eval. n continuare este prezentat un exemplu n care funcia eval creeaz 10 variabile numite P1, P2, ...P10, i seteaz fiecare variabil la o anumit valoare:

for i=1:10 eval(['P',int2str(i),'= i.^2']) end

7.5. Reprezentarea i manipularea informaiilor despre dat i timp MATLAB-ul furnizeaz funcii pentru manipularea informaiilor despre dat i timp, funcii grupate n directorul timefun. CategorieFuncieDescriereData i timpul curentnowData i timpul curent ca numr serial.dateData curent ca ir de caractere.clockData i timpul curent ca vector.ConversiidatenumConversia la numr serial al datei.datestrConversia la reprezentare de tip caracter.datevecComponentele datei.UtilitarecalendarCalendar.weekdayZiua din sptmn.eomdayUltima zi din lun.datetickEtichete formatate de tip dat.TimingcputimeTimpul CPU n secunde.tic, tocStart i oprire pentru timer.etimeTimp scurs. 7.6. Intrri utilizator

Pentru a obine o intrare de la utilizator n timpul execuiei unui fiier exist urmtoarele posibiliti: Afiarea unui prompter prin intermediul unei funcii tip input i introducerea unor date de la tastatur. Oprirea execuiei cu o comand pause (reluarea execuiei la apsarea unei taste). Construirea unei interfee grafice GUI complet.

Funcia input asigur afiarea unui prompter i ateapt un rspuns de la utilizator. Sintaxa este: n = input('prompt_string')

Funcia determin afiarea irului de caractere prompt_string, ateapt o intrare de la tastatur i returneaz valoarea introdus de la tastatur. Funcia este util pentru implementarea aplicaiilor de tip meniu. Aceast funcie poate s returneze intrarea de la utilizator sub form de caracter. Exemplu: name = input('Enter address: ','s');

Comanda pause, fr argumente, oprete execuia pn la apsarea unei taste. Pentru a avea o pauz de n secunde se folosete comanda: pause(n)

8. GRAFICE I INTERFEE GRAFICE N MATLAB 8.1. Tehnici de plotare n general, pentru a realiza o reprezentare grafic, trebuie parcurse etapele urmtoare:

Etapa Instruciuni 1.Pregtirea datelor x = 0:0.2:12; y1 = bessel(1,x); y2 = bessel(2,x); y3 = bessel(3,x); 2. Selectarea ferestrei grafice i pozionarea graficului n fereastr figure(1) subplot(2,2,1) 3. Apelarea unei funcii elementare de plotare h = plot(x,y1,x,y2,x,y3); 4. Selectarea caracteristicilor liniei i markerului. set(h,'LineWidth',2,,'LineStyle'-,,'--';':';'-.'}) set(h,{'Color'},{'r';'g';'b'}) 5. Setarea limitelor axelor, gridare (caroiere) axis([0 12 -0.5 1]) grid on 6. Completarea graficului cu etichete pe axe, legend, text xlabel('Time') ylabel('Amplitude') legend(h,'First','Second','Third') title('Bessel Functions') [y,ix] = min(y1); text(x(ix),y,'First Min \rightarrow',... 'HorizontalAlignment','right') 7. Export grafice print -depsc -tiff -r200 myplot

Funciile de baz folosite la plotare sunt prezentate n tabelul urmtor: FuncieUtilizarePlotGenereaz grafice 2-D cu scalare liniar a axelorPlot3Genereaz grafice 3-D cu scalare liniar a axelorloglogGenereaz grafice cu scalare logaritmic a axelorsemilogxGenereaz grafice cu scalare liniar a axei y i cu scalare logaritmic a axei xsemilogyGenereaz grafice cu

scalare liniar a axei x i cu scalare logaritmic a axei yplotyyGenereaz grafice cu dubl reprezentare a axei y (pe stnga i pe dreapta)

8.1.1. Plotri 2 D elementare Generarea graficelor

Funcia plot are diferite forme n funcie de argumentele de intrare. Dac de exemplu y este un vector, plot(y) produce un grafic liniar al elementelor lui y versus indexul elementelor sale. Dac se specific doi vectori ca argumente, plot(x,y) produce graficul lui y versus x.

Exemplu:

t = 0:pi/100:2*pi; y = sin(t); plot(t,y) grid on

Se pot realiza grafice multiple utiliznd un singur apel al funciei plot. MATLAB-ul realizeaz automat o reprezentare cu culori diferite pentru a permite distingerea graficelor. Exemplu:

y2 = sin(t-0.25); y3 = sin(t-0.5); plot(t,y,t,y2,t,y3)

Specificarea stilului de linie Se pot crea diferite tipuri de linii pentru fiecare set de date prin folosirea unor identificatori de tip string n funcia plot. Exemplu:

t = 0:pi/100:2*pi; y = sin(t); y2 = sin(t-0.25); y3 = sin(t-0.5); plot(t,y,'-',t,y2,'--',t,y3,':')

Funciile de plotare accept deci argumente de tip caracter care specific stilul liniei, simbolurile utilizate pentru marker, culoarea etc. Forma general este:

plot(x,y,'linestyle_marker_color')

unde linestyle_marker_color este un ir de caractere construit din: Un stil de linie (de exemplu linie punctat, plin etc.) Un tip de marker (de exemplu x, *, o, etc.) Un specificator de culoare (c, m, y, k, r, g, b, w)

Se poate folosi un specificator sau mai muli, n orice ordine. De exemplu, 'go--' definete o linie ntrerupt, cu markere circulare, ambele colorate n verde.

Specificarea culorii i dimensiunii liniilor

Caracteristicile liniilor se pot controla prin specificarea unor valori pentru proprietile linilor: LineWidth specific limea unei linii.

MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor markerului n cazul anumitor forme (cerc, ptrat etc.) MarkerFaceColor seteaz culoarea interiorului markerelor.

MarkerSize specific dimensiunea markerului.

Exemplu:

x = -pi:pi/10:pi; y = tan(sin(x)) - sin(tan(x)); plot(x,y,'--rs','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',10)

Suprapunerea unor grafice peste un grafic existent

Se pot aduga grafice peste unul existent cu comanda hold. Dac se seteaz hold on, MATLAB-ul nu nltur graficul existent, ci suprapune noul grafic n aceeai fereastr grafic. Exemplu: semilogx(1:100,'+') hold on plot(1:3:300,1:100,'--') hold off

Plotarea simultan a markerelor i liniilor Pentru plotarea markerelor (care indic punctele corespunztoare datelor) i a liniilor (care unesc aceste date) se specific att tipul markerului ct i stilul liniei. Exemplu:

x = 0:pi/15:4*pi; y = exp(2*cos(x));

plot(x,y,'-r',x,y,'ok')

Plotarea datelor din matrici

Atunci cnd funcia plot este utilizat cu un singur argument de tip matrice: plot(Y) va fi realizat un grafic pentru fiecare coloan a matricii, cu axa x reprezentnd indexul de linie 1:m, cu m numrul liniilor din Y. Exemplu: cu instruciunea Z = peaks; este creat o matrice 49x49 obinut printr-o evaluare de funcie. Dac plotm matricea cu plot(Z)vom avea un grafic cu 49 de linii.

Plotarea cu axa Y dubl Comanda plotyy permite crearea unor grafice pentru dou seturi de date i cu reprezentare dubl a axei Y, pe partea stng i pe partea dreapt. Exemplu:

t = 0:pi/20:2*pi; y = exp(sin(t)); plotyy(t,y,t,y,'plot','stem')

Setarea parametrilor axelor MATLAB-ul seteaz automat limitele axelor i gradarea acestora. Se pot ns folosi i setrile utilizatorului, cu comenzile: axis seteaz axele pentru fereastra grafic curent.

axes creeaz axe noi cu caracteristici specificate. get i set permit obinerea i setarea unor proprieti ale axelor. gca returneaz identificatorul axelor curente.

Se pot parcurge n detaliu aceste comenzi prin apelarea la help.

Ferestre de tip figur MATLAB-ul direcioneaz ieirile grafice spre o fereastr distinct de fereastra de comand. Aceast fereastr grafic este denumit figur (figure). (a se vedea paragraful 3.3).

Funcia figure genereaz ferestre grafice. De exemplu, figure genereaz o nou fereastr i o face fereastra curent.

Afiarea unor grafice multiple n aceeai fereastr grafic

Se poate realiza o afiare a mai multor grafice n aceeai fereastr prin intermediul funciei subplot. Funcia subplot(m,n,i) desparte fereastra de tip figur ntr-o matrice m x n de mici subploturi (subgrafice) i selecteaz subplotul i ca grafic curent. Exemplu:

t = 0:pi/20:2*pi; [x,y] = meshgrid(t); subplot(2,2,1) plot(sin(t),cos(t)) axis equal subplot(2,2,2) z = sin(x)+cos(y); plot(t,z) axis([0 2*pi -2 2])

subplot(2,2,3) z = sin(x).*cos(y); plot(t,z) axis([0 2*pi -1 1]) subplot(2,2,4) z = (sin(x).^2)-(cos(y).^2); plot(t,z) axis([0 2*pi -1 1])

Comenzi de marcare, etichetare i gradare a graficelor

MATLAB-ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a unui text n orice loc din grafic. Comenzile sunt prezentate n tabelul urmtor. Comand DescrieretitleAdaug un titluxlabelAdaug o etichet pe axa xylabelAdaug o etichet pe axa yzlabelAdaug o etichet pe axa zlegendAdaug o legendTextAfieaz un text la o locaie specificatGtextPlaseaz textul pe grafic utiliznd mouse-ul Etichetarea axelor Se pot aduga etichete pe axe cu comenzile xlabel, ylabel, zlabel. Exemplu: xlabel('t = 0 to 2\pi','FontSize',16) ylabel('sin(t)','FontSize',16) title('\it{Value of the Sine from Zero to Two Pi}','FontSize',16)

MATLAB-ul interpreteaz caracterele care urmeaz dup backslash "\" ca i comenzi TeX. Aceste comenzi permit reprezentarea unor simboluri cum ar fi literele greceti sau sgeile.

Adugarea textelor Prin utilizarea funciei text se poate plasa un text (ir de caractere) oriunde pe grafic. Exemplu: text(3*pi/4,sin(3*pi/4),... '\leftarrowsin(t) = .707',... 'FontSize',16) text(pi,sin(pi),'\leftarrowsin(t) = 0',... 'FontSize',16) text(5*pi/4,sin(5*pi/4),'sin(t)=-.707\rightarrow',... 'HorizontalAlignment','right',... 'FontSize',16)

Plasarea textului n mod interactiv

Dac utilizm funcia gtext se poate plasa un text n mod interactiv, cu mouse-ul, oriunde pe grafic. Aceast funcie accept ca argument un ir de caractere i ateapt pn cnd utilizatorul selecteaz un loc pe grafic cu ajutorul mouse-ului. Se poate utiliza i Plot Editor pentru plasarea textului (a se vedea paragraful 3.3).

8.1.2. Grafice 2 D specializate MATLAB-ul permite lucrul cu o mare varietate de tipuri de grafice, astfel nct informaiile s poat fi prezentate eficient. Tipul de grafic selectat depinde n mod esenial de natura datelor prelucrate. Graficele de tip bare sau arie (bar, area) sunt utile pentru vizualizarea unor rezultate, compararea lor i afiarea unei contribuii individuale din total. Graficele de tip statistic (pie charts) indic contribuiile individuale dintr-un total. Histogramele (histogram) sunt utile pentru a indica distribuia valorilor datelor. Graficele de tip stem i stairstep sunt utile pentru date discrete.

Graficele compass, feather, quiver sunt utile pentru plotarea vectorilor de tip direcie i vitez. Graficele de tip contur (contour) sunt utile la reprezentarea unor regiuni de valori egale ale datelor. Plotrile interactive (interactive) permit selectarea unor puncte de plotare n mod interactiv.

Graficele de tip animaie (animations) adaug date la grafice consecutive i creeaz o animaie.

Grafice de tip Bar i Area Funcie DescriereBarAfieaz coloanele unor matrici mxn ca m grupe de n bare verticale BarhAfieaz coloanele unor matrici mxn ca m grupe de n bare orizontalebar3Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale 3-D bar3hAfieaz coloanele unor matrici mxn ca m grupe de n bare orizontale tridimensionale 3-D AreaAfieaz datele din vectori ca suprafee Grafice Bar grupate Ca setare implicit, un grafic cu bare reprezint fiecare element dintr-o matrice cu o singur bar. n cazul unui grafic 2-D, barele create cu funcia bar sunt distribuite de-a lungul axei x, cu fiecare element dintr-o coloan desenat la alt locaie. Toate elementele dintr-o linie sunt reprezentate grupat la aceeai locaie pe axa x. Exemplu:

Y = [5 2 1 873 986 555 4 3 2]; bar(Y)

Grafice Bar 3-D separate Funcia bar3, n cea mai simpl form, traseaz fiecare element ca un bloc separat de tip 3-D, cu elementele fiecrei coloane distribuite de-a lungul axei y. Barele care reprezint elementele din

prima coloan a unei matrice sunt centrate la 1 pe axa x .a.m.d. Barele care reprezint elementele din ultima coloan sunt centrate la valoarea size(Y,2) de pe axa x. Exemplu: bar3(Y).

Grafice Bar 3-D grupate Pentru a realiza un grafic de bare grupate 3 D se specific argumentul 'group': bar3(Y,'group')

Grafice statistice - pie charts Graficele pie afieaz procentul cu care fiecare element al unui vector sau matrice contribuie la suma tuturor elementelor. Funciile pie i pie3 creeaz grafice 2-D i 3-D. n continuare prezentm un exemplu de vizualizare a ponderii a trei produse din totalul vnzrilor. Se consider o matrice X, pentru care fiecare coloan reprezint vnzrile anuale pentru cte un produs, pe o perioad de nregistrri de 5 ani: X = [19.3 22.1 51.6; 34.2 70.3 82.4; 61.4 82.9 90.8; 50.5 54.9 59.1; 29.4 36.3 47.0];

Se pot calcula vnzrile pentru fiecare produs n cei 5 ani cu ajutorul funciei: x = sum(X);

Dac utilizm argumentul de intrare explode putem reprezenta ntr-un mod explodat care dintre produse a avut o contribuie mai mare la vnzri (de exemplu). Programul are urmtoarea form:

explode = zeros(size(x)); [c,offset] = max(x); explode(offset) = 1; h = pie(x,explode); colormap summer

Crearea de grafice tip contur Funciile contour i contour3 afieaz contururi 2-D i 3-D. Funciile cer un singur argument, i anume o matrice, ale crei date sunt interpretate ca nlimi fa de un plan. Pentru a seta numrul de niveluri de contur (implicit se realizeaz automat pe baza valorilor minime i maxime) se folosete un argument suplimentar opional. De exemplu, [X,Y,Z] = peaks; contour(X,Y,Z,20) afieaz 20 de contururi ale funciei peaks ntr-o vedere bidimensional.

Dac dorim o reprezentare 3 D putem folosi comenzile: [X,Y,Z] = peaks; contour3(X,Y,Z,20) h = findobj(`Type','patch'); set(h,'LineWidth',2) title('Twenty Contours of the peaks Function')

Animaie Se pot crea secvene animate n MATLAB pe dou ci:

Salvarea unui numr de imagini i rularea lor ca pe un film.

tergerea continu i redesenarea unor obiecte pe ecran, fcnd schimbri n mod incremental la fiecare redesenare.

Filme Se parcurg trei etape: Se folosete moviein pentru iniializarea memoriei pentru o matrice suficient de mare. Se utilizeaz getframe pentru a genera fiecare cadru de film, care este returnat ca un vector coloan cu care se poate construi o matrice de tip film. Se folosete movie pentru rularea filmului de un numr specificat de ori cu o vitez specificat.

tergere i redesenare Pot fi create diferite efecte prin selectarea unor moduri de tergere. Pentru crearea unei animaii sunt utile trei moduri de tergere: none - MATLAB nu terge obiectele. background - MATLAB terge obiectul i l redeseneaz n background. Acest mod terge obiectul i tot ce este sub el (linii de grid etc.). xor Acest mod terge doar obiectul i este cel mai folosit la animaie.

Pentru vizualizarea unor efecte de animaie i construirea unor exemple proprii este indicat utilizarea facilitii demo a MATLAB-ului.

8.1.3. Plotri tridimensionale (3 D) Paii tipici care trebuie parcuri pentru trasarea unor grafice tridimensionale sunt prezentai n continuare.

Etapa Instruciuni1.Pregtirea datelor Z = peaks(20); 2. Selectarea ferestrei grafice i poziionarea graficului n fereastr figure(1)

subplot(2,1,2)3. Apelarea unei funcii de plotare 3-D h = surf(Z);4a. Setarea unei hri de culori i a unui algoritm de umbrire colormap hot shading interp set(h,'EdgeColor','k') 4b. Adugarea unei iluminri light('Position',*-2,2,20]) lighting phong material([0.4,0.6,0.5,30]) set(h,'FaceColor',[0.7 0.7 0],... 'BackFaceLighting','lit') 5. Setarea unui punct de vizualizare view([30,25]) set(gca,'CameraViewAngleMode','Manual') 6. Setarea limitelor axelor i a marcajelor axis(*5 15 5 15 -8 8]) set(gca'ZTickLabel','Negative||Positive') 7. Setarea proporionalitii set(gca,'PlotBoxAspectRatio',... [2.5 2.5 1]) 8. Completarea graficului cu etichete, legend, text xlabel('X Axis') ylabel('Y Axis') zlabel('Function Value') title('Peaks') 9. Operaiuni de tiprire set(gcf,'PaperPositionMode','auto') print -dps2 Reprezentarea unei matrice ca o suprafa MATLAB-ul definete o suprafa prin coordonatele z ale punctelor de deasupra unui caroiaj dreptunghiular n planul x-y. Graficul este format prin unirea punctelor adiacente cu linii drepte. Plotrile de suprafee sunt utile pentru vizualizarea matricilor care sunt prea mari pentru a fi afiate n form numeric i pentru trasarea graficelor funciilor de dou variabile. MATLAB-ul poate crea diferite forme de trasare a suprafeelor:

FuncieUtilizare

mesh, surfTrasare a unei suprafee meshc, surfcTrasarea suprafeei, inclusiv conturul meshzTrasarea suprafeei, inclusiv planul de referin pcolorPlotare plan a suprafeei (valorile sunt proporionale doar cu culoarea)surflTrasarea suprafeei luminat din direcia specificat surfaceFuncie de nivel sczut pentru crearea unor obiecte tip grafice suprafa Grafice realizate cu mesh i surf Comenzile mesh i surf genereaz suprafee 3-D din datele provenite de la matrici. Dac Z este o matrice pentru elementele creia Z(i,j) se definete nlimea unei suprafee peste un caroiaj (i,j) atunci

mesh(Z)

genereaz o imagine colorat, caroiat a suprafeei i o afieaz n vedere 3-D.

Similar,

surf(Z)

genereaz o imagine colorat, continu a suprafeei i o afieaz n vedere 3-D. n cazul comenzii mesh se pot folosi comenzi de tipul shading pentru eliminarea liniilor de tip mesh (shading flat) sau pentru interpolarea umbririlor de-a lungul faetelor suprafeei (shading interp).

Vizualizarea funciilor de dou variabile Primul pas care trebuie parcurs pentru trasarea graficului unei funcii de dou variabile, z = f(x,y), este de a genera matricile X i Y care definesc domeniul n care va fi vizualizat funcia. Apoi se utilizeaz aceste matrici pentru evaluare i trasarea graficului funciei. Funcia meshgrid transform domeniul specificat prin doi vectori, x i y, n matricile X i Y. Liniile matricei X sunt copii ale vectorului x i coloanele matricei Y sunt copii ale vectorului y.

Pentru a vedea cum se folosete meshgrid, vom considera funcia sin(r)/r (numit funcia sinc). Pentru a evalua funcia ntre -8 i 8 i pentru x i pentru y, este necesar doar un argument de tip vector pentru meshgrid, care va fi utilizat n ambele direcii:

[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps;

Matricea R conine distanele de la centru (originea), iar eps este adugat pentru a evita mprirea la zero. Acum se poate forma funcia sinc i se poate realiza plotarea cu mesh. Z = sin(R)./R; mesh(Z)

Se poate realiza o mbuntire a reprezentrii grafice n condiiile utilizrii acelorai date, prin folosirea unor faciliti de iluminare i ajustare a imaginii (daspect, axis, camlight, view). Exemplu: surf(X,Y,Z,'FaceColor','interp','EdgeColor','none',... 'FaceLighting','phong') daspect([5 5 1]);axis tight;view(-50,30);camlight left

Harta culorilor Fiecare fereastr grafic MATLAB are asociat o hart a culorilor (colormap), care este o matrice cu trei coloane a cror lungime este egal cu numrul de culori definite. Fiecare linie a matricii definete o culoare particular prin specificarea a trei valori n domeniul 0 1. Aceste valori definesc componentele RGB (red, green, blue) (adic intensitile componentelor video rou, verde i albastru). Funcia colormap fr argumente returneaz harta figurii curente. Funcia colorbar afieaz n fereastra grafic harta curent a culorilor, sub forma unei bare aezate lng grafic. Exemplu: [x,y] = meshgrid([-2:.2:2]);Z = x.*exp(-x.^2-y.^2);

surf(x,y,Z,gradient(Z));colorbar

8.2. Handle Graphics i Interfee Grafice n MATLAB (GUI) Crearea i manipularea graficelor n MATLAB se realizeaz cu ajutorul unui sistem de grafic orientat pe obiecte denumit Handle Graphics. Acest sistem furnizeaz componentele necesare generrii unor grafice: comenzi de trasare a liniilor, textelor, grafice 3-D, poligoane etc. precum i instrumente interactive de tipul meniurilor, butoanelor, ferestre de dialog etc. Cu Handle Graphics se pot manipula direct elementele grafice (aa cum o fac funciile MATLAB de nivel nalt descrise n paragraful anterior) pe dou ci: fie de la linia de comand MATLAB fie cu ajutorul unor fiiere MATLAB create special.

8.2.1. Graficele privite ca obiecte. Ierarhia obiectelor Obiectele grafice sunt de fapt elementele grafice de baz utilizate de MATLAB pentru afiarea datelor i pentru crearea Interfeelor Grafice Utilizator (Graphical User Interfaces - GUI). Fiecare stare a unui obiect este asociat unui identificator unic numit handle, care poate fi folosit pentru manipularea caracteristicilor obiectului respectiv (caracteristici care sunt numite proprietile obiectului). Obiectele grafice sunt structurate ntr-o ierarhie pe trei nivele:

Ierarhia este bazat pe interdependenele dintre diferitele obiecte grafice. De exemplu, pentru trasarea unui obiect linie, MATLAB utilizeaz un obiect de tip axe pentru orientarea i furnizarea unui sistem de referin liniei. Obiectul de tip axe are nevoie la rndul su de o fereastr grafic pentru afiarea liniei. Obiectele grafice sunt interdependente i prin urmare un ecran grafic conine o mare varietate de obiecte care mpreun furnizeaz o imagine sau un grafic care are o semnificaie clar. Pentru exemplificare se poate analiza urmtoarea fereastr grafic, fereastr care conine mai multe obiecte grafice.

Fiecare tip de obiect grafic are o funcie generatoare corespunztoare, funcie care este utilizat pentru crearea unui obiect din clasa respectiv de obiecte. Funciile de generare a obiectelor au

aceleai nume ca i obiectele pe care le creeaz (funcia text pentru obiecte de tip text, funcia figure pentru obiecte de tip figur etc.). Tipurile de obiecte grafice sunt descrise pe scurt n continuare.

Rdcina (Root) n fruntea ierarhiei este obiectul rdcin, care corespunde cu ecranul calculatorului. Acest obiect nu trebuie creat, el exist, este unic i toate celelalte obiecte sunt descendenii acestuia. Se pot modifica anumite proprieti ale obiectului rdcin.

Obiectele figur (Figure) Obiectele de tip figur sunt ferestre individuale pe ecranul rdcin pe care MATLAB-ul afieaz graficele. Nu exist limit pentru numrul de ferestre grafice (dect cele datorate limitelor calculatorului). Toate obiectele figur sunt copii ai rdcinii i celelalte obiecte grafice sunt descendeni ai figurilor.

Obiectele de tip Uicontrol Obiectele Uicontrol sunt elemente de control ale interfeei utilizator care execut subrutine de apel atunci cnd utilizatorul activeaz un obiect. Exist mai multe stiluri de control cum ar fi butoane, liste etc. Fiecare astfel de instrument este proiectat s accepte un anumit tip de informaie de la utilizator. De exemplu, listele sunt de obicei folosite pentru pentru furnizarea unei liste de nume, din care utilizatorul poate selecta unul sau mai multe articole. Obiectele Uicontrol pot fi utilizate n diferite combinaii pentru construirea unor ecrane de control i a unor ferestre de dialog. n exemplul urmtor sunt prezentate astfel de combinaii: meniuri popup, ferestre de tip text editabile, ferestre de verificare (check boxes), butoane, text static, cadre etc.

Obiectele Uicontrol sunt copiii obiectelor de tip figur i sunt independente de obiectele de tip axe.

Obiectele de tip Uimenu Obiectele Uimenu sunt meniuri pull-down care execut rutine de apelare atunci cnd utilizatorul selecteaz un articol individual dintr-un meniu. MATLAB-ul plaseaz obiectele Uimenu pe bara de meniuri a ferestrei grafice, la dreapta meniurilor existente definite de sistem.

Imaginea urmtoare arat partea de sus a unei figuri MS-Windows care are definite trei meniuri de top Uimenu (intitulate Workspace, Figure, i Axes). Dou niveluri de submeniuri sunt vizibile n meniul Workspace.

Obiectele Uimenu sunt descendente directe ale obiectelor de tip figur i deci sunt independente de axe. Obiectele de tip axe (Axes) Obiectele de tip axe definesc o regiune ntr-o fereastr de tip figur i orienteaz descendenii lor spre aceast regiune. Obiectele de tip axe sunt copiii obiectelor de tip figur i sunt prinii obiectelor de tip imagine, luminozitate, linie, patch, suprafa i text. Toate funciile care traseaz grafice (plot, surf, mesh, bar etc.) creeaz un obiect de tip axe dac nu exist deja unul. Uicontrol i Uimenu nu sunt descendeni ai obiectelor de tip axe.

Obiectele de tip Imagine (Image) O imagine n MATLAB const ntr-o matrice de date i o hart a culorilor. Exist trei tipuri de baz de imagini care difer n funcie de modul n care elementele matricii de date sunt interpretate ca pixeli color indexai, intensitate i truecolor.

Obiectele de tip lumin (luminozitate) (Light) Aceste obiecte definesc surse de lumin care influeneaz toate obiectele de tip patch i suprafa dintre axe. Se pot seta proprietile care determin tipul sursei de lumin, culoarea, localizarea i altele.

Obiectele de tip linie (Line) Obiectele de tip linie sunt elemente grafice de baz care sunt folosite pentru a genera cele mai multe plotri 2-D i unele 3-D. Funciile de nivel nalt plot, plot3, loglog etc. genereaz obiecte de tip linie. Sistemul de coordonate al obiectului printe obiectul de tip axe poziioneaz i orienteaz linia.

Obiectele de tip Patch

Aceste obiecte sunt contururi poligonale cu muchii (laturi), umplute. Un singur obiect patch poate conine mai multe fee, fiecare colorat independent. Funciile fill, fill3, contour3 creeaz obiecte patch. Ca i n cazul liniei, sistemul de coordonate al obiectului printe (axele) poziioneaz i orienteaz obiectul patch. Obiectele de tip dreptunghi (Rectangle) Aceste obiecte sunt arii 2-D umplute, cu o form care poate varia de la un dreptunghi la o elips.

Obiectele de tip suprafa (Surface) Obiectele de tip Surface sunt reprezentri 3-D ale matricilor de date create prin plotarea fiecrui element al matricii ca o nlime deasupra planului x-y. MATLAB-ul poate trasa suprafee pline, colorate sau doar o reea de linii (mesh) care conecteaz punctele respective. Sistemul de coordonate al axelor poziioneaz i orienteaz obiectul de tip suprafa. Funciile de nivel nalt pcolor, surf, mesh genereaz obiecte de tip suprafa.

Obiectele de tip Text Obiectele de tip text sunt de fapt iruri de caractere. Sistemul de coordonate al axelor poziioneaz textul. Funciile de nivel nalt title, xlabel, ylabel, zlabel, gtext genereaz obiecte de tip text.

8.2.2. Proprietile obiectelor grafice Proprietile obiectelor grafice determin aspectul i comportamentul acestora. Proprietile includ informaii generale (tipul obiectului, printe, copii, dac obiectul este vizibil etc.) i informaii specifice unei anumite clase particulare de obiecte. MATLAB-ul organizeaz informaiile ntr-o ierarhie i salveaz aceste informaii n proprieti ale obiectelor. De exemplu, proprietile rdcinii conin identificatorul (handle) figurii curente i locaia curent a pointerului (cursorului), proprietile figurii conin liste cu descendenii i evenimentele din fereastr, proprietile axelor conin informaii despre cum fiecare din obiectele copil folosete harta culorilor etc. Valoarea curent a oricrei proprieti poate fi aflat, iar unele valori pot fi modificate. Valoarea unei proprieti este aplicat numai unui obiect particular i nu ntregii clase de obiecte. Se pot seta valori implicite care s fie valabile pentru toate obiectele create ulterior. Anumite proprieti sunt comune tuturor obiectelor grafice:

ProprietateInformaii coninuteBusyActionControleaz modul n care MATLAB-ul apeleaz rutinele de ntreruperi definite pentru un anumit obiect.ButtonDownFcnRutin executat la apsarea unui buton.ChildrenManipuleaz toate obiectele copil ale obiectului.ClippingActivare/dezactivare mod tiere.CreateFcnRutin executat atunci cnd acest tip de obiect este creat.DeleteFcnRutin

executat atunci cnd se d o comand de distrugere (tergere) a obiectului.HandleVisibilityPermite controlul obiectului de la linia de comand sau din rutine de apelare.InterruptibleDetermin cnd o rutin poate fi ntrerupt printr-o rutin invocat ulterior.ParentPrintele obiectului.SelectedIndic dac obiectul este selectat.SelectionHighlightSpecific dac este indicat starea de selectare.TagEtichet a unui obiect specificat de utilizator.TypeTipul obiectului (figur, linie, text etc.)UserDataOrice dat care se dorete a fi asociat obiectului.VisibleDetermin dac obiectul este vizibil sau nu. 8.2.3. Funcii de generare a obiectelor grafice Fiecare obiect grafic, mai puin rdcina, are o funcie de generare corespondent: FuncieDescriere obiectaxes Sistem de coordonate carteziene care scaleaz i orienteaz obiectele copil: imagine, lumin, linie, patch, suprafa i text.figureFereastr pentru afiare grafic.image Imagine 2-D definit prin indicarea hrii culorilor sau valori RGB. Datele pot fi pe 8 bii sau dubl precizie.lightSurs direcionat de lumin, localizat ntre axe, care influeneaz suprafeele i obiectele patch.lineLinie format prin conectarea coordonatelor prin segmente drepte ntr-o secven specificat. patchForm poligonal creat prin interpretarea fiecrei coloane din matricile de coordonate ca un poligon separat.rectangleArie 2-D umplut (plin), cu form de la dreptunghi la elips.surfaceSuprafa cu fee dreptunghiulare, definite prin interpretarea elementelor matricei ca nlimi deasupra planului.textir de caractere localizat n sistemul de coordonate al axelor.uicontextmenuMeniu context ce poate fi asociat cu alt obiect grafic.uicontrolInterfa utilizator programabil (butoane, liste etc.).uimenuMeniu programabil care apare n partea superioar a figurii.Toate funciile de generare a obiectelor au un format similar: handle=function('propertyname',propertyvalue,...) Exemplu de generare a obiectelor grafice n exemplul urmtor este evaluat o funcie matematic i sunt create trei obiecte grafice folosind valorile proprietilor specificate ca argumente ale comenzilor figure, axes i surface, celelalte proprieti avnd valori implicite.

[x,y] = meshgrid([-2:.4:2]); Z = x.*exp(-x.^2-y.^2); fh=figure('Position',[350 275 400 300],'Color','w'); ah=axes('Color',[.8 .8 .8],'XTick',[-2 -1 0 1 2],... 'YTick',[-2 -1 0 1 2]); sh = surface('XData',x,'YData',y,'ZData',Z,... 'FaceColor',get(ah,'Color')+.1,...

'EdgeColor','k','Marker','o',... 'MarkerFaceColor',[.5 1 .85]);

Funcia surface nu folosete o vedere 3-D ca funcia de nivel nalt surf. Se poate schimba vederea ntr-una 3-D cu camera commands sau cu comanda view: view(3)

9. PREZENTAREA TOOLBOX-URILOR MATLAB MATLAB permite dezvoltarea unei familii de aplicaii sub forma toolbox-urilor. Aceste toolbox-uri permit nvarea i aplicarea tehnologiilor specializate din diverse domenii. Sunt disponibile toolboxuri pentru domenii cum ar fi: procesarea numeric a semnalelor, sisteme de conducere automat, reele neurale, logic fuzzy, wavelet, simulare (SIMULINK), identificare, statistic, crearea de hri, procesarea imaginilor, etc. n continuare sunt prezentate pe scurt facilitile oferite de cteva din aceste toolbox-uri. 9.1. Toolbox-ul Comunicaii (Communications Toolbox) Communications Toolbox este o colecie de funcii de calcul i blocuri de simulare pentru cercetare, dezvoltare, proiectarea de sisteme i simulare n domeniul comunicaiilor. Toolboxul este proiectat att pentru experi ct i pentru nceptori n domeniu, i se bazeaz pe MATLAB i Simulink.

Funcii disponibile: Surse de date Surse codare/decodare Controlul erorilor de codificare Modulare/demodulare Filtre transmisie/recepie Canale de transmisie Acces multiplu Sincronizare Utilitare

9.2. Toolbox-ul pentru Sisteme de Conducere Automat (Control System) MATLAB-ul dispune de o colecie bogat de funcii utile att inginerului automatist practician ct i teoreticianului din domeniul teoriei sistemelor. Printre facilitile oferite enumerm: aritmetic complex, valori proprii, gsirea rdcinilor, inversri de matrici, Transformarea Fourier Rapid etc. Toolbox-ul Control System folosete structurile matriceale ale MATLAB i reprezint fundaia MATLAB. Toolbox-ul este o colecie de algoritmi (n principal sub forma fiierelor .m), care implementeaz proiectarea sistemelor de conducere, precum i tehnici de analiz i modelare. Sistemele pot fi modelate n MATLAB ca funcii de transfer, sub forma poli-zerouri sau prin reprezentarea de stare, ceea ce permite aplicarea tehnicilor clasice i a celor moderne. Se poate lucra cu sisteme continue i cu sisteme discrete i pot fi efectuate conversii ntre diversele tipuri de modele. Toolbox-ul permite calculul i trasarea rspunsurilor n domeniul timp i domeniul frecven, precum i a locului rdcinilor. De asemenea, se pot realiza alocri de poli, se pot implementa conducerea optimal i estimatoare etc. 9.3. Toolbox-ul pentru Baze de Date (Database Toolbox) Toolbox-ul Baze de Date permite importul i exportul de date ntre MATLAB i cele mai rspndite programe de baze de date. Cu acest toolbox se pot importa date din exterior, se utilizeaz capacitile mari de calcul i prelucrare analitic ale MATLAB, i se export rezultatele napoi n baza de date sau n alt baz de date. Realizarea acestor operaiuni se face astfel: toolbox-ul Database conecteaz MATLAB la o baz de date utiliznd funciile MATLAB; datele sunt preluate de la baza de date ca i caractere, sunt transformate n tipuri de date corespunztoare i sunt stocate n tablouri de tip celul. n acest moment se pot folosi instrumentele MATLAB de lucru cu date. Se pot include funciile toolbox-ului n fiiere M-files. Pentru exportul datelor se utilizeaz n final funciile specializate MATLAB. Toolbox-ul Database este furnizat mpreun cu interfaa grafic Visual Query Builder (VQB). 9.4. Toolbox-ul de Procesare a Semnalelor (Signal Processing Toolbox) Toolbox-ul de Procesare a Semnalelor este o colecie de instrumente construit n mediul de calcul numeric MATLAB. Toolbox-ul permite o mare varietate de operaii de prelucrare a semnalelor, de la forme de und la proiectarea filtrelor, modelare parametric i la analiza spectral. Toolbox-ul furnizeaz dou categorii de instrumente: Funcii de prelucrare a semnalelor de la linia de comand Intefee grafice utilizator pentru: - Proiectarea interactiv a filtrelor - Trasarea i analiza semnalelor - Analiz spectral - Aplicarea de filtre semnalelor

- Analiza filtrelor 9.5. Toolbox-ul DSP Blockset Setul de blocuri de procesare numeric a semnalelor (DSP Blockset) este o colecie de biblioteci de blocuri care se utilizeaz cu pachetul Simulink. Bibliotecile DSP Blockset sunt proiectate special pentru prelucrarea numeric a semnalelor i includ faciliti cum ar fi filtrarea clasic, adaptiv, manipulri de matrici, algebr liniar, statistic, etc. DSP Blockset extinde mediul Simulink prin furnizarea de componente i algoritmi pentru sistemele DSP. Faciliti: Operaiuni bazate pe cadre Suport matriceal Filtrare adaptiv i cu eantionare multipl Operaiuni statistice Algebr liniar Estimarea parametrilor Faciliti de timp real 9.6. Toolbox-ul Finane (Financial Toolbox) MATLAB-ul mpreun cu toolbox-ul de Finane furnizeaz un mediu de calcul integrat i complet pentru analiz i inginerie financiar. Toolbox-ul dispune de instrumente de analiz matematic i statistic a datelor financiare i instrumente de prezentare grafic a rezultatelor obinute. Faciliti: Calcul i analiz de pre i de producie Realizeaz analize venituri, preuri etc. compatibile SIA (Securities Industry Association) Analiza i managementul portofoliilor Proiectarea i evaluarea de strategii financiare Identificarea, msurarea i controlul riscului Analiza i calculul fluxului de cash Analiza i predicia activitii economice Crearea de instrumente financiare structurate Cercetare academic

9.7. Toolbox-ul de Procesare a Imaginilor (Image Processing Toolbox) Toolbox-ul Image Processing este o colecie de funcii care extind posibilitile MATLAB din domeniul prelucrrii imaginilor. Toolbox-ul dispune de o mare varietate de operaiuni de prelucrare a imaginilor, cum ar fi: Operaii geometrice Operaii de tip vecintate Filtrare liniar i proiectarea filtrelor Transformate Analiza i mbuntirea imaginilor Operaii binare Operaii asupra regiunii de interes Multe dintre funciile toolbox-ului sunt fiiere M-files care constau n instruciuni MATLAB care implementeaz algoritmi specializai de prelucrare a imaginilor. Aceste instruciuni pot fi vizualizate cu comanda cunoscut: type function_name Posibilitile toolbox-ului pot fi extinse prin crearea de fiiere proprii prin utilizarea funciilor disponibile n combinaie cu alte toolbox-uri cum ar fi Signal Processing Toolbox i Wavelet Toolbox. 9.8. Toolbox-ul Optimizare (Optimization Toolbox) Acest toolbox este o colecie de funcii care includ rutine pentru o mare diversitate de optimizri: Minimizare neliniar fr constrngeri Minimizare neliniar cu constrngeri, inclusiv probleme de tip minimax i probleme de minimizare semi-infinit Programare liniar i ptratic Algoritmi neliniari de tipul celor mai mici ptrate Rezolvarea de sisteme de ecuaii neliniare Sunt disponibili i algoritmi specializai pentru sisteme mari (large-scale problems). Funciile toolboxului pot fi utilizate n combinaie cu alte toolbox-uri sau cu Simulink. 9.9. Toolbox-ul pentru Sisteme de Putere (Power System Blockset) Sistemele electrice de putere sunt combinaii de circuite electrice i de aparate electro-mecanice cum ar fi motoarele i generatoarele. Inginerii care lucreaz n acest domeniu trebuie s mbunteasc performanele sistemelor de putere. Cerinele de cretere drastic a eficienei au

determinat proiectanii s foloseasc aparatur electronic i sisteme sofisticate de conducere care necesit instrumente de analiz i proiectare corespunztoare, fiind absolut necesar nelegerea fenomenelor (neliniare) prin simulare. Power System Blockset a fost proiectat pentru furnizarea unor instrumente de proiectare care permit inginerilor s construiasc rapid i uor modele care simuleaz sistemele de putere. Blocurile utilizeaz mediul Simulink i permit construirea unui model cu proceduri simple de tip click and drag. Se poate trasa rapid topologia circuitelor electrice i de asemenea se poate face o analiz a circuitelor care include interaciunile cu sistemele mecanice, termice, de control. Bibliotecile conin modele ale aparaturii tipice pentru sistemele de putere, cum ar fi transformatoare, linii electrice, motoare, electronic de putere etc. Posibilitile toolbox-ului pot fi testate prin rularea fiierelor demonstrative. 9.10. Toolbox-ul Stateflow (Diagrame de stare) Stateflow este un produs multiplatform, care poate rula pe sisteme Microsoft Windows 95, Windows NT i UNIX, i care necesit MATLAB + Simulink. Stateflow este un instrument grafic de proiectare i dezvoltare pentru sisteme de conducere complexe i pentru sisteme logice de supervizare. Cu ajutorul acestui toolbox se pot genera modele sub forma unor diagrame de stare dinamice ale unui sistem. Generarea de cod pentru elementele Simulink ale unui model Stateflow necesit pachetul suplimentar al Simulink-ului Real-Time Workshop.

9.11. Toolbox-ul de Statistic (Statistics Toolbox)

Toolbox-ul de Statistic dispune de instrumente care permit executarea de sarcini statistice uzuale, de la generarea de numere aleatoare pn la proiectarea de experimente statistice i controlul proceselor statistice. Exist dou categorii de instrumente: Construcia de funcii statistice i probabilistice Instrumente grafice interactive Prima categorie const n funcii care pot fi apelate din linia de comand sau din aplicaii proprii. A doua categorie const n instrumente interactive care permit accesul la funcii prin intermediul unei interfee grafice utilizator (GUI), care furnizeaz un mediu adecvat pentru funcii de predicie, interpolare, probabilistice etc. 9.12. Toolbox-ul pentru Calcul Simbolic (Symbolic Math Toolbox) Acest toolbox completeaz facilitile grafice i numerice ale MATLAB-ului cu diverse alte tipuri de faciliti matematice, care permit efectuarea de calcule simbolice.

Maina de calcul utilizat este nucleul de la Maple. Exist de fapt dou toolbox-uri: unul de baz, care este o colecie de peste o sut de funcii MATLAB care permit accesul la Maple, i un toolbox extins care permite accesul extins la multiple pachete Maple (non-grafice, faciliti de programare, proceduri utilizator etc.) Faciliti:

Calcul matematic:

Diferenieri, integrri, limite, sume, serii Taylor

Algebr liniar:

Inverse, determinani, valori proprii, forme canonice

ale matricilor

Simplificri:

Metode de simplificare a expresiilor algebrice

Soluionarea ecuaiilor: Soluii simbolice i numerice ale ecuaiilor algebrice i difereniale

Aritmetic cu precizie Evaluarea numeric a expresiilor matematice cu precizie specificat

variabil:

Transformri:

Fourier, Laplace, Transformarea z i inversele lor

Funcii matematice Funcii speciale ale matematicilor aplicate clasice

speciale:

10. PACHETUL DE MODELARE I SIMULARE SIMULINK SIMULINK este un pachet software pentru modelarea, simularea i analiza sistemelor dinamice. Pot fi modelate sisteme liniare i neliniare, continue, discrete, hibride, cu mai multe perioade de eantionare.

SIMULINK furnizeaz o interfa grafic utilizator (GUI) pentru crearea modelelor sub forma unor diagrame construite din blocuri, pe baza unor tehnici de tip click-and-drag realizate cu mouseul. Astfel, trasarea diagramelor este simpl i intuitiv, aproape la fel de simpl ca trasarea acestor diagrame direct pe hrtie. n plus, se evit formularea matematic laborioas (sistemele dinamice sunt de regul descrise de ecuaii difereniale sau cu diferene).

SIMULINK dispune de o bibliotec vast de surse, receptoare, componente liniare i neliniare, conectori etc. pe baza crora se pot trasa diagrame i construi blocuri proprii.

Modelele realizate n SIMULINK sunt ierarhice. Se poate vizualiza modelul de nivel nalt, iar la efectuarea unui dublu click pe blocul respectiv se coboar nivel dup nivel astfel nct se pot observa toate detaliile de construcie i de organizare ale modelului.

Dup crearea unui model se pot realiza simulri apelnd la diverse metode de integrare din meniurile SIMULINK i/sau utiliznd comenzi MATLAB. Prin utilizarea unor blocuri de tip osciloscop sau diverse dispozitive de afiare se pot observa rezultatele chiar n timpul simulrii. De asemenea se pot schimba valorile unor parametri i se poate observa imediat efectul acestor modificri. Rezultatele obinute se pot transporta n workspace-ul MATLAB pentru prelucrri i vizualizri ulterioare.

10.1. Rularea unui model SIMULINK demonstrativ Rularea modelului

Pentru a analiza modul de lucru cu SIMULINK se poate apela la rularea unor programe (modele) demonstrative. Unul din programele demo este modelul termodinamic al unei case. Pentru rularea programului, trebuie parcuri urmtorii pai:

1. Se starteaz MATLAB.

2. Se ruleaz demonstraia tastnd thermo n fereastra de comand MATLAB sau se tasteaz comanda demo i se alege programul demonstrativ din meniul care apare. Aceste comenzi starteaz SIMULINK i creeaz o fereastr model care conine modelul respectiv.

La deschiderea modelului (extensiile fiierelor SIMULINK sunt .mdl) SIMULINK-ul deschide un bloc de tip osciloscop cu dou ecrane (temperatur interioar/exterioar - Indoor vs. Outdoor Temp. i costul nclzirii - Heat Cost ($)).

3. Pentru startarea simulrii se activeaz meniul Simulation i se alege comanda Start command (sau se activeaz direct butonul Start din bara de instrumente). O dat cu startarea simulrii sunt plotate evoluiile temperaturii interioare i exterioare, ca i costul cumulat al nclzirii.

4. Pentru oprirea simulrii se alege comanda Stop din meniul Simulation (sau butonul Pause din bara de instrumente).

5. Atunci cnd se dorete terminarea rulrii programului se nchide modelul alegnd Close din meniul File. Descrierea modelului Programul modeleaz sistemul termodinamic al unei case folosind o reprezentare simpl. Temperatura de referin este setat la 70 grade Fahrenheit (aprox. 21 grade Celsius). Temperatura din cas este influenat de temperatura exterioar, care poate fi variat sub form sinusoidal (amplitudine 15 grade F, temperatura de baz 50 grade F), variaie care simuleaz fluctuaiile temperaturii din exterior din timpul zilei. Sunt utilizate subsisteme care fac modelul simplu i configurabil (un subsistem este un bloc alctuit dintr-un grup de blocuri conectate). Modelul conine 5 subsisteme: Thermostat, House i trei Convertoare de temperatur (Temp Convert), din care 2 convertesc Fahrenheit n Celsius i unul Celsius n Fahrenheit. Efectuarea unui dublu click pe blocul House permite vizualizarea blocurilor componente ale subsistemului.

Subsistemul Thermostat este de tip releu i determin pornirea sau oprirea sistemului de nclzire. Se pot vedea blocurile componente la efectuarea unui dublu click pe subsistem.

Subsistemele de conversie a temperaturii au o structur asemntoare:

Alte demonstraii

Din fereastra bibliotecilor SIMULINK pot fi rulate i alte demonstraii care pun n eviden diverse concepte i tehnici de modelare din diverse domenii. Pentru rularea din fereastra bibliotecilor SIMULINK se procedeaz astfel: 1. Se tasteaz simulink3 n fereastra de comand MATLAB; va apare fereastra bibliotecilor SIMULINK. 2. Se execut dublu click pe icon-ul Demos. Va apare fereastra demo a MATLAB-ului, care conine cteva modele SIMULINK interesante.

10.2. Crearea modelelor SIMULINK Tehnica de creare a unor modele SIMULINK poate fi ilustrat cel mai bine prin exemple. Modelul prezentat n continuare integreaz un sinus i afieaz att rezultatul ct i unda sinusoidal de la intrare. Schema bloc a modelului este urmtoarea:

Pentru a genera modelul se tasteaz mai nti simulink n fereastra de comand MATLAB. Pe sistemele de operare de tip Windows va apare Browser-ul bibliotecilor SIMULINK.

Pe sistemele UNIX, va apare fereastra bibliotecilor SIMULINK.

Pentru a genera un model nou pe sisteme UNIX se selecteaz Model din submeniul New al meniului File. Pe sisteme Windows se selecteaz butonul New Model din bara de instrumente a Browser-ului de Biblioteci.

Simulink va deschide o fereastr pentru un model nou.

Pentru construcia modelului vor fi necesare blocuri din urmtoarele biblioteci Simulink: Biblioteca de surse (blocul Sine Wave) Biblioteca de receptoare (blocul Scope) Biblioteca de sisteme continue (blocul Integrator) Biblioteca Signals & Systems (blocul Mux)

Pentru copierea blocului Sine Wave se utilizeaz Browser-ul de bibiloteci: nti se expandeaz arborele de biblioteci (prin click pe nodul Simulink i apoi click pe nodul surse) astfel nct s fie afiate blocurile din biblioteca de surse. Apoi se selecteaz blocul Sine Wave (click). Fereastra Browser-ului de biblioteci va arta astfel:

La pasul urmtor se trage (innd apsat butonul din stnga al mouse-ului) blocul Sine Wave din browser i i se d drumul n fereastra modelului. Simulink va face o copie a blocului Sine Wave n punctul indicat. Se poate proceda asemntor pentru copierea blocului Sine Wave din biblioteca de surse deschis din fereastra de biblioteci Simulink (pe sisteme Windows se poate deschide fereastra de biblioteci din Browser prin click din butonul drept al mouse-ului i apoi click pe Open Library).

Ca i n cazul utilizrii browser-ului se trage blocul Sine Wave din biblioteca de surse n fereastra modelului (drag and drop):

Se procedeaz n mod asemntor i cu copierea celorlalte blocuri din bibliotecile corespunztoare n fereastra modelului. Se poate deplasa cu uurin orice bloc prin tragerea cu mouse-ul sau prin selectare i deplasare cu tastele sgei. Dup copierea tuturor blocurilor necesare n fereastra de lucru, modelul trebuie s arate ca n figura urmtoare:

La o examinare atent a simbolurilor de reprezentare a blocurilor se vor observa sgei care indic intrrile sau ieirile din blocuri: dac simbolul > este orientat spre ieirea blocului atunci este un port de ieire (output port) iar dac simbolul este ndreptat spre bloc este un port de intrare (input port).

Un semnal circul de la un port de ieire al unui bloc spre un port de intrare al altui bloc printr-o linie de conectare, Atunci cnd blocurile sunt conectate, simbolurile porturilor dispar.

Pentru conectarea blocurilor se trece nti la conectarea blocului Sine Wave la prima intrare (de sus) a blocului Mux. Pentru aceasta se poziioneaz pointerul mouse-ului deasupra portului de ieire al blocului Sine Wave. n acest moment forma pointerului se schimb i devine de tip cruce (cursor).

Se ine apsat butonul stnga al mouse-ului i se deplaseaz cursorul pn la intrarea de sus a blocului Mux.

Urmeaz eliberarea butonului mouse-ului i se observ cum blocurile au fost conectate.

n afara liniilor care conecteaz ieirile unor blocuri la intrrile altora exist i linii de branare a unor linii la intrrile unor blocuri (se poate observa n modelul prezentat iniial). O astfel de linie este utilizat pentru conectarea ieirii din blocul Sine Wave i la blocul Integrator (exist deja conexiunea la blocul Mux).

Pentru a efectua aceast conexiune se procedeaz astfel: 1. Se poziioneaz pointerul pe linia dintre blocurile Sine Wave i Mux.

2. Se apas i se ine apsat tasta Ctrl. Se apas butonul mouse-ului i apoi se trage pn la intrarea n blocul Integrator sau pn deasupra acestui bloc.

3. Se elibereaz butonul mouse-ului i se observ cum apare o linie de branare pn la portul de intrare n blocul Integrator.

Se procedeaz conform indicaiilor i se efectueaz toate conectrile necesare. Modelul va trebui s arate n final astfel:

10.3. Rularea simulrilor n SIMULINK Dup ncheierea procedurii de construcie a modelului, trebuie rulat o simulare pentru aprecierea corectitudinii modelului i pentru obinerea rezultatelor cerute. Pentru aceasta se deschide mai nti blocul osciloscopului (Scope), pentru a vizualiza evoluia mrimilor modelului. Pstrnd fereastra osciloscopului deschis se va seta Simulink pentru rularea unei simulri timp de 10 secunde. Pentru aceasta, parcurgem urmtorii pai: 1. Setm parametrii simulrii prin alegerea submeniului Parameters din meniul Simulation. n fereastra de dialog care apare vom seta parametrul Stop time la 10.0 (valoare implicit). 2. nchidem fereastra de dialog Simulation Parameters prin click pe butonul Ok. Simulink va aplica parametrii i va nchide fereastra de dialog.

3. Se selecteaz Start din meniul Simulation i se observ curbele afiate n fereastra osciloscopului.

4. Simularea se va opri atunci cnd se ajunge la finalul timpului de rulare indicat n fereastra de dialog Simulation Parameters sau la selectarea opiunii Stop din meniul Simulation (sau din bara de instrumente). Pentru salvarea modelului se alege Save din meniul File i se introduce un nume de fiier i se alege directorul unde dorim s salvm modelul (fiierul va avea automat extensia .mdl). Pentru ncheierea lucrului se selecteaz Exit MATLAB sau se tasteaz quit n fereastra de comand a MATLAB-ului. 10.4. Modul de lucru al unui program SIMULINK Fiecare bloc dintr-un model Simulink are urmtoarele caracteristici generale: un vector de intrare, u, un vector de ieire, y, i un vector de stare, x:

Vectorul de stare poate consta din stri continue, stri discrete sau combinaii ale acestora. Relaiile matematice dintre aceste mrimi (intrri, ieiri, stri) sunt exprimate prin ecuaii de tipul:

Simularea const n dou faze: iniializare i simulare propriu-zis. Faza de iniializare nseamn parcurgerea urmtoarelor etape: 1. Blocul parametrilor este trecut n MATLAB pentru evaluare. Valorile numerice rezultate sunt folosite ca parametri actuali (cureni). 2. Este parcurs ierarhia modelului. Fiecare subsistem care nu este un subsistem executat condiionat este nlocuit prin blocurile componente. 3. Blocurile sunt sortate n ordinea n care este necesar actualizarea lor. Algoritmul de sortare ntocmete o list astfel nct orice bloc nu este actualizat pn cnd blocurile care furnizeaz intrrile acestuia nu sunt actualizate. n timpul derulrii acestei etape sunt detectate buclele algebrice. 4. Conexiunile dintre blocuri sunt verificate pentru asigurarea compatibilitii ieire-intrare. Urmeaz faza de simulare propriu-zis. Modelul este simulat prin integrare numeric. Calculul derivatelor se face n doi pai. Prima dat ieirea fiecrui bloc este calculat n ordinea determinat de algoritmul de sortare. La al doilea pas, pentru fiecare bloc se calculeaz derivatele n funcie de timp, intrri i stri. Vectorul derivatelor rezultat este returnat algoritmului de rezolvare de tip ODE, care l utilizeaz pentru calculul noului vector de stare pentru momentul de timp urmtor. O dat ce noul vector de stare este calculat, blocurile sunt actualizate.

BIBLIOGRAFIE

1. Ionete C., Seliteanu D., Petrior A. Proiectarea sistemic asistat de calculator n MATLAB, Reprografia Universitii din Craiova, 1995. 2. Leonard N.E., Levine W.S Using MATLAB to analyze and design Control Systems, AddisonWesley Publ., SUA, 1995. 3. 4. Marchand P. Graphics and GUIs with MATLAB, CRC Press, SUA, 1999. *** MATLAB Users Guide, The Mathworks Inc., SUA, 2000.

CUPRINS

CAP. 1. PREZENTARE GENERAL

CAP. 2. FUNDAMENTELE PROGRAMRII N MATLAB

2.1. Expresii fundamentale 2.2. Help on-line, formatul datelor, opiuni de salvare 2.3. Crearea fiierelor MATLAB (.m files) 2.4. Matrici, vectori i polinoame 2.5. Operaiuni elementare cu matrici i funcii 23 8

12 17

CAP. 3. MEDIUL DE LUCRU MATLAB

25

3.1. Startul i terminarea sesiunilor de lucru 3.2. Fereastra de comand (fereastra principal) 3.2.1. Editarea liniilor de comand n fereastra principal 3.2.2. Descrierea ferestrei de comand 3.2.3. Spaiul de lucru al MATLAB-ului (workspace) 3.2.4. Ci de cutare 3.3. Fereastra grafic (figure) 3.4. Importul i exportul de date 3.5. Utilizarea memoriei 29 32 34 27

25 27

36 38 42

CAP. 4. EDITORUL/DEBUGGER-UL I PROFILER-UL MATLAB

43

4.1. Editorul/Debugger-ul MATLAB 4.2. Profiler-ul MATLAB 51

43

CAP. 5. MATRICI, ALGEBR LINIAR, POLINOAME, TEHNICI DE INTERPOLARE 56

5.1. Matricile n MATLAB

56

5.2. Rezolvarea ecuaiilor liniare 5.3. Inverse i determinani 5.4. Funcii de matrice. Valori proprii 5.5. Reprezentarea polinoamelor. Interpolarea 61 63

58 60

CAP. 6. REPREZENTAREA FUNCIILOR. ECUAII DIFERENIALE

69

6.1. Reprezentarea i plotarea funciilor matematice 6.2. Minimizarea funciilor i gsirea zerourilor 6.3. Integrarea numeric 6.4. Rezolvarea ecuaiilor difereniale 75 71

69

73

CAP. 7. PROGRAMAREA N LIMBAJUL MATLAB

78

7.1. Fiiere MATLAB 7.2. Tipuri de date i operatori 7.3. Instruciuni de salt i bucle 7.4. Evaluarea datelor de tip caracter 7.5. Reprezentarea i manipularea informaiilor despre dat i timp 7.6. Intrri utilizator 80 84

78

85 86 86

CAP. 8. GRAFICE I INTERFEE GRAFICE N MATLAB

87

8.1. Tehnici de plotare 8.1.1. Plotri 2 D elementare 8.1.2. Grafice 2 D specializate 8.1.3. Plotri tridimensionale (3 D) 96

87 88

101

8.2.