Sunteți pe pagina 1din 97

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 Lang Operators and special characters. Programming language constructs. 1

Strfun Iofun Timefun Datatypes

Character strings. File input/output. Time and dates. Data 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. Graph3d Three-dimensional graphs. Specgraph Specialized graphs. Graphics Handle Graphics. Uitools Graphical 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 Elfun Specfun Matfun Datafun Polyfun Funfun Sparfun Elementary matrices and matrix manipulation. Elementary math functions. Specialized math functions. Matrix functions numerical linear algebra. Data analysis and Fourier transforms. Interpolation and polynomials. Function functions and ODE solvers. Sparse 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) (M-files) 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 9.6397238 1i -99 1.60210e-20 -3.14159j 0.0001 6.02252e23 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 ordinii de evaluare a

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 I J Eps Realmin Realmax Inf NaN

3.14159265 Imaginary unit, -1 Same as I Floating-point relative precision, 2-52 Smallest floating-point number, 2-1022 Largest floating-point number, 21023 Infinity Not-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.

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.
o

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 yellow magenta cyan red green . o x + * point circle x-mark plus star : -. -solid dotted dashdot dashed

b w k

blue white black

s d v ^ < > p h

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 Hexadecimal format. 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 Approximation by ratio of small integers. Spacing: FORMAT COMPACT Suppress extra line-feeds. FORMAT LOOSE Puts the extra line-feeds back in.

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: A whos Name A c determ c Size 2x2 1x1 1x1 determ Bytes 32 8 8 Class double array double array 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. 10

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 = 0:.002:1; y = humps(x);

1 cu programul:

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

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.

12

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 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1

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 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

i apoi
sum(A')' ans =

13

34 34 34 34

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 0:pi/4:pi ans = 0

93

86

79

72

65

58

51

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 =

14

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 5 11 9 7 4 14 3 10 6 15 13 8 12 1

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 5 10 11 9 6 7 4 15 14

13 8 12 1

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

p2=[2 0 1 0 5] p2 = 2 0 1 p3=conv(p1,p2) p3 =

15

11

10

15

25

2.5.

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

Pentru nmulirea a dou matrici se folosete operatorul * , valabil de altfel i pentru operaiile cu scalari. Exemplu:
D=A*B D = 58 129 -30 -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 2 1 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 size(E) ans = 3 2 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

16

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

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 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 (M-files) 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.

17

Opiunea de Startup Automation Logfile logfilename Minimize Nosplash r M_file Regserver Unregserver

Descriere Starteaz MATLAB-ul ca un server automat, minimizat, fr splash screen. Scrie n mod automat ieirile din MATLAB ntr-un log file specificat. Starteaz MATLAB-ul minimizat i fr splash screen-ul MATLAB. Starteaz MATLAB-ul fr afiarea splash screen-ului MATLAB. Ruleaz automat fiierul .m specificat imediat dup pornirea MATLAB.ului. Modific regitrii Windows cu intrri adecvate tip ActiveX pentru MATLAB. Modific 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: finishdlg.m:

permite salvarea variabilelor curente 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 8 3 6 10

18

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 Key Control Key Ctrl-p Ctrl-n Ctrl-b Ctrl-f ctrlctrlhome end esc del backspace Ctrl-r Ctrl-l Ctrl-a Ctrl-e Ctrl-u Ctrl-d Ctrl-h Ctrl-k Operation Recall previous line. Recall next line. Move back one character. Move forward one character. Move right one word. Move left one word. Move to beginning of line. Move to end of line. Clear line. Delete character at cursor. Delete character before cursor. Delete (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: Return Space Bar q To advance to the next line To advance to the next page To 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.

19

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:

20

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.

21

General Preferences:

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 rulat. 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:
-mat -ascii -ascii -double -ascii -double tabs -v4 -append

Utilizeaz formatul binar tip .MAT (implicit). Utilizeaz formatul ASCII pe 8 digii. Utilizeaz formatul ASCII pe 16 digii. Delimiteaz elementele tablourilor cu tab-uri. Salveaz ntr-un format pe care versiunea 4 MATLAB l poate deschide. Adaug datele ntr-un fiier .MAT existent.

22

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) save myfile VAR1 VAR2 load myfile

au acelai efect ca 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.

23

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. Caut pe fis ca pe o variabil. 2. Verific dac fis este o funcie tip buit-in. 3. Caut n directorul curent fiierul numit fis.m. 4. 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. unde s este un ir de caractere, seteaz calea la s. adaug noi directoare la calea de

path(s),

addpath /home/lib i path(path,'/home/lib')

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.

24

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: Nume Figure file (*.fig) M-file (name.m) Model (name.mdl) P-file (name.p) Aciune Deschide o figur ntr-o fereastr tip figur. Deschide fiierul name de tip .m n Editor. Deschide modelul name n Simulink. Deschide fiierul corespunztor name.m, dac exist, n Editor. 25

Variable Alte extensii (name.custom)

Deschide tabloul name n Array Editor (tabloul trebuie s fie numeric); open apeleaz openvar. 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 iar dac nu ntr-una nou creat.

n fereastra curent de tip figur, dac aceasta exist,

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. 26

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).
3.4.

Importul de date n tabelul urmtor sunt prezentate cteva metode de import date: Metoda Introducerea unei liste explicite de elemente Crearea de date ntrun fiier .m ncrcarea datelor dintr-un fiier ASCII Cnd trebuie utilizat metoda. Mod de utilizare Atunci cnd cantitatea de date este mic. Se tasteaz pur i simplu datele utiliznd parantezele drepte ([ ]). Se 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. Fiierele 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 Metoda este folosit cnd se ncarc date de la alte aplicaii, date care au fopen, fread i cu propriul lor format. funciile de intrare/ieire Dlmread Funcii specializate Citete fiiere de date ASCII. de citire a fiierelor Textread Citete date de tip caracter sau numerice dintr-un fiier i le convertete n variabile MATLAB. Wk1read Citete fiiere de tip (WK1) (tip foaie de lucru) Imread Citete din fiiere grafice. Auread Wavread Crearea de fiiere tip MEX pentru citirea datelor Dezvoltarea unor programe n Fortran sau C Citete fiiere de sunet tip (.au). Citete fiiere de sunet Microsoft WAVE (.wav).

Este metoda potrivit dac sunt deja disponibile rutine C sau Fortran pentru citirea datelor din alte aplicaii. Se 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: Metoda Cnd trebuie utilizat metoda. Mod de utilizare

Folosirea comenzii Pentru tablouri de date de mic dimensiune se folosete comanda diary diary pentru crearea unui fiier de tip jurnal i afiarea variabilelor. Ieirea diary include comenzile MATLAB folosite ntr-o sesiune de lucru. 27

Salvarea datelor n format ASCII Scrierea datelor n formate speciale Funcii specializate de scriere a fiierelor

Se utilizeaz comanda save cu opiunea -ascii. Se poate folosi dlmwrite dac este necesar specificarea altor delimitatori. Se folosesc fwrite i alte funcii I/O de nivel sczut. Este util la scrierea datelor n formate cerute de alte aplicaii. Dlmwrite Scrie fiiere n format ASCII. wk1write Scrie fiiere tip (WK1). Imwrite Scrie imagini pentru fiiere grafice. Auwrite Scrie fiiere de sunet tip (.au). Wavwrite Scrie fiiere de sunet tip Microsoft WAVE (.wav). Crearea unor fiiere Este metoda potrivit dac sunt deja disponibile rutine C sau Fortran pentru tip MEX pentru scrierea datelor n formate cerute de alte aplicaii. scrierea datelor Scrierea datelor n fiiere tip .MAT Se 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. 28

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. 29

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 MATLAB-ul 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

30

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: 31

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: Scop Toolbar Seteaz/ terge Breakpoint terge toate Breakpointurile Step In (Pas n) Seteaz sau terge un breakpoint pe linia pe care este Dbstop/ Dbclear poziionat cursorul. terge toate breakpoint-urile care sunt setate n mod Dbclear all curent. Execut linia curent a fiierului .m i dac linia este Dbstep o apelare la alt funcie sare (face un pas) n funcia respectiv. in Descriere Comand Echivalent

Single Step Dbstep (Un singur Execut linia curent a fiierului .m . pas) Continu execuia fiierului pn la terminare sau Dbcont Continu pn la alt breakpoint. Sfrit Ieirea din starea de depanare. dbquit depanare 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. Breakpointul 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);

32

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:

33

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 = 1:length(mu)

Se selecteaz din nou Single Step:


for i

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.

34

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. Sintax Descriere Setarea unui breakpoint. tergerea unui breakpoint. Stop la atenionare, eroare sau generarea de NaN/Inf. Reluarea execuiei. Listarea apelrii de funcii. Listarea tuturor breakpointurilor. Executarea a una sau mai multe linii. Listarea fiierelor M-file cu liniile numerotate. Schimbarea contextului spaiului de lucru local (down). Schimbarea contextului spaiului de lucru local (up). Prsirea modului de depanare. dbstop at line_num in file_name dbclear at line_num in file_name dstop if warning error naninf infnan Dbcont Dbstack dbstatus file_name dbstep nlines dbtype file_name dbdown dbup 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. 35

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
Profile on

Opiuni

Descriere Starteaz profiler-ul i terge statisticile nregistrate anterior.

-detail level -history Profile report Basename Profile plot Profile resume Profile clear Profile off Profile status stats = profile('in fo')

Specific nivelul funciei analizate. Specific secvena exact a apelurilor fcute de funcia care va fi nregistrat. Suspend activitatea profilerului dup care genereaz un raport n format HTML pe care l afieaz n browserul Web. Salveaz raportul n fiierul basename din directorul curent. Suspend activitatea profiler-ului dup care afieaz un grafic n fereastra figur cu funciile care consum majoritatea timpului de execuie. Restarteaz profiler-ul fr a terge statisticile nregistrate anterior. terge statisticile nregistrate. Termin activitatea profiler-ului. Afieaz o structur care conine starea curent a profiler-ului. 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]); profile report lotkaprof

3. Se genereaz un raport i se salveaz rezultatele n fiierul lotkaprof. 4. Se restarteaz profiler-ul fr tergerea statisticilor existente.
profile resume profile off

5. Se oprete profiler-ul. Vizualizarea rezultatelor

36

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.

37

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 urmtoare:

de

forma

din

figura

38

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. Categoria Analiza matriceal Funcia
norm normest rank det trace null orth subspace

Descriere Norma unei matrice sau a unui vector. Estimeaz norma-2 a matricei. Rangul matricei. Determinant. Suma elementelor de pe diagonal. Spaiul Nul. Ortogonalizare. Unghiul dintre 2 subspaii. Utilizate la calculul soluiilor ecuaiilor liniare. Inversa matricei. Numrul de condiie pentru inversare. 39

Ecuaii liniare

\ i / inv cond

Valori proprii i valori singulare

chol lu qr pinv lscov eig svd poly hess qz schur

Factorizarea Cholesky. Factorizarea LU. Decompoziia ortogonal-triunghiular. Pseudoinversa. Cele mai mici ptrate cu covarian cunoscut. Valori proprii i vectori proprii. Decompoziia n valori singulare. Polinomul caracteristic. Forma Hessenberg. Factorizarea QZ. Decompoziia Schur. Exponeniala de matrice. Logaritmul de matrice. Rdcina ptrat de matrice. Evaluarea unei funcii generale de matrice.

Funcii de matrice

expm logm sqrtm funm

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

40

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. m > n. m < n. Sistem ptratic. Se poate cuta o soluie exact. Sistem supradeterminat (incompatibil). Se caut o soluie de tip cele mai mici ptrate. 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 ortogonaltriunghiular). 41

Vom prezenta un exemplu (care utilizeaz funcia matriceal random rand).


R = fix(10*rand(2,4)) R = 6 8 7 3 3 5 4 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 -7/6 -1/2 1/2 1 0 0 1 vector de forma x=p+Z*q pentru q vector arbitrar

Orice 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 5 1 -2

1 -2 1

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 2 3 1 3 6

42

X=pinv(A1) X = 1.5000 -0.8333 0.1667 -0.0000 0.6667 -0.3333 1.0000 -2.0000 1.0000 -1.5000 2.1667 -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 = 3 6 6 14 10 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 -26.0000 38.0000 10.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 4 1 9 1 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 v care satisfac egalitatea i un vector

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: 43

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.6481 - 0.0862i 0.0765 - 0.2227i 0.2233 - 0.6835i 0.6481 + 0.0862i 0.0765 + 0.2227i 0 -1.7593 - 2.4847i 0 0.3160 0.4368 0.8422 0 0 -2.4814

D = -1.7593 + 2.4847i 0 0

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.4440 + 0.1691i 0.1549 -0.0775 + 0.4250i 0.2987 -0.1494 + 0.0434i J = -2.4814 0 0 0 -1.7593 - 2.4847i 0 0.4440 - 0.1691i -0.0775 - 0.4250i -0.1494 - 0.0434i 0 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: Funcie
conv deconv poly

Descriere Multiplic polinoamele. mparte polinoamele. Returneaz coeficienii dac se rdcinile; Polinomul caracteristic. 44

dau

polyder polyfit polyval polyvalm residue roots

Calcul derivatei unui polinom. Gsirea coeficienilor unui polinom din aproximarea unui set de date. Evaluarea unui polinom. Evaluarea unui polinom cu argument matriceal. Descompunere n fracii simple. Gsirea 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 2 -2 0 1 poly(A) ans = 1 6 1 -1 -3 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) = X 4 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: 45

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 5 6 r = 0 0 0

Funcia polyder permite calculul derivatei unui polinom.


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

Exemplu:

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)

46

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 8 a2 = 1 6 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. Funcie griddata interp1 interp2 interp3 interpft spline Descriere Interpolare pe suprafee. Interpolare monodimensional. Interpolare bi-dimensional. Interpolare tri-dimensional. Interpolare mono utiliznd metoda FFT. Interpolare 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);

47

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:

48

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])

49

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])

50

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 x 1 0.567376 2 0.732624 3 0.465248 4 0.644416 5 0.6413 6 0.637618 7 0.636985 8 0.637019 9 0.637052 x = 0.6370 f(x) 12.9098 13.7746 25.1714 11.2693 11.2583 11.2529 11.2528 11.2528 11.2528 Procedure initial golden golden parabolic parabolic parabolic parabolic parabolic parabolic

51

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 x f(x) 1 -1 -5.13779 2 1 16 3 -0.513876 -4.02235 4 0.243062 71.6382 5 -0.473635 -3.83767 6 -0.115287 0.414441 7 -0.150214 -0.423446 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 Procedure initial initial interpolation bisection interpolation bisection interpolation interpolation interpolation interpolation interpolation interpolation interpolation

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

52

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)

10 8 6 4 2 0 1 0.5 0 -0.5 -1 -1 -0.5 0.5 0 1

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. 53

Categorie Funcii ODE care

Funcie rezolv ode45 ode23 ode113 ode15s ode23s ode23t ode23tb

Descriere Rezolv ecuaii difereniale nonstiff, metod de ordin mediu. Rezolv ecuaii difereniale nonstiff, metod de ordin sczut. Rezolv ecuaii difereniale nonstiff, metod de ordin variabil. Rezolv ecuaii difereniale stiff i ecuaii algebrice difereniale, metod de ordin variabil. Rezolv ecuaii difereniale stiff, metod de ordin sczut. Ecuaii difereniale stiff i ecuaii algebrice difereniale, metoda trapezelor. Rezolv ecuaii difereniale stiff, metod de ordin sczut. Creeaz sau schimb opiuni de structur ale ODE. Permite obinerea parametrilor din opiunile ODE. Plotarea soluiilor ODE (n funcie de timp). Trasarea planului fazelor. Trasarea spaiului fazelor (tridimensional). Permite tiprirea soluiei ODE n fereastra de comand.

Opiuni ODE

odeset odeget

Funcii de ieire ODE

odeplot odephas2 odephas3 odeprint

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. 54

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)):

55

-1

-2

-3 -3

-2

-1

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:
1. Crearea unui fiier cu un editor de text.

2. Apelarea fiierului .m de la linia de comand sau din alt fiier .m.

Caracteristicile celor dou tipuri de fiiere sunt prezentate n tabelul urmtor: Fiiere Script Fiiere Function Nu acccept argumente de intrare i nu Accept argumente de intrare i returneaz ieiri. returneaz ieiri. Opereaz cu datele din workspace. Variabilele interne ale funciei sunt locale (implicit). Utile pentru automatizarea unei serii de Utile pentru extinderea limbajului pai care trebuie executai de multe ori. MATLAB pentru diverse aplicaii. 56

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 bi-dimensionale ale acestor tablouri sunt numite matrici i de aici provine i numele de MATLAB.

57

n tabelul urmtor sunt prezentate detaliat tipurile de date: Clasa


Array Cell Char Double Numeric sparse

Exemple
{17'hello'eye(2)} 'Hello' [1 2;3 4] 5+6I Speye(5)

storage struct uint8 User Object

a.day = 12; a.color = 'Red'; a.mat = magic(3); Uint8(magic(3)) Inline('sin(x)')

Descriere Tip de date virtual. Tablou tip celul. Elementele celulei conin alte tablouri. Tablou de tip caracter (sau ir de caracterestring); fiecare caracter are 16 bii lungime. Tablou numeric n dubl precizie (cel mai obinuit tip de variabil MATLAB). Tip de date virtual. Matrice de tip sparse n dubl precizie (doar 2D). Tablourile de tip sparse stocheaz matrici cu doar cteva elemente nenule ntr-o fraciune din spaiul necesar unei matrici normale echivalente. Tip de date virtual. Tablou tip structur, care conine nume de cmpuri, cmpuri care conin alte tablouri. Tablou de numere ntregi fr semn pe 8 bii. 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 Scdere nmulire mprire la dreapta mprire la stnga Plus unar Minus unar : .^ .' ' * / \ ^ Operatorul dou puncte Putere Transpusa Transpusa complex conjugat nmulire de matrici mprire matriceal la dreapta 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 58

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 v u ans = [1 0 2 3 0 5]; = [5 6 1 0 0 7]; & v = 1 0 1 0 0

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. 59

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

all

any

Returneaz 1 dac oricare din elementele argumentului sunt adevrate sau nenule; n caz contrar returneaz 0.

Alte 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. Operator () ~ (negare) .' .^ ' ^ + (plus unar) - (minus unar) .* ./ .\ * / \ + (adunare) - (scdere) : < <= > >= == ~= & | Nivel de prioritate Prioritate maxim

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. 60

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: % Daca n este negativ afiseaza un mesaj de eroare.

if n < 0

disp('Intrarea trebuie sa fie pozitiva'); elseif rem(n,2)= =0 A = n/2; else A = (n+1)/2; end

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

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

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'];

61

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. Categorie Data i timpul curent Funcie now date clock datenum datestr datevec calendar weekday eomday datetick cputime tic, toc etime Descriere Data i timpul curent ca numr serial. Data curent ca ir de caractere. Data i timpul curent ca vector. Conversia la numr serial al datei. Conversia la reprezentare de tip caracter. Componentele datei. Calendar. Ziua din sptmn. Ultima zi din lun. Etichete formatate de tip dat. Timpul CPU n secunde. Start i oprire pentru timer. Timp scurs.

Conversii

Utilitare

Timing

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: 62

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 1.Pregtirea datelor Instruciuni
x = 0:0.2:12; y1 = bessel(1,x); y2 = bessel(2,x); y3 = bessel(3,x); figure(1) subplot(2,2,1) h = plot(x,y1,x,y2,x,y3);

2. Selectarea ferestrei grafice i pozionarea graficului n fereastr 3. Apelarea unei funcii elementare de plotare 4. Selectarea caracteristicilor liniei i markerului. 5. Setarea limitelor axelor, gridare (caroiere) 6. Completarea graficului cu etichete pe axe, legend, text

set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'}) set(h,{'Color'},{'r';'g';'b'}) axis([0 12 -0.5 1]) grid on 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') print -depsc -tiff -r200 myplot

7. Export grafice

Funciile de baz folosite la plotare sunt prezentate n tabelul urmtor: Funcie Utilizare Plot Genereaz grafice 2-D cu scalare liniar a axelor Plot3 Genereaz grafice 3-D cu scalare liniar a axelor loglog Genereaz grafice cu scalare logaritmic a axelor semilogx Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic a axei x semilogy Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic a axei y plotyy Genereaz 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;

63

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,':')

64

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)

65

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')

66

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')

67

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])

68

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
title xlabel ylabel zlabel legend Text Gtext

Descriere Adaug un titlu Adaug o etichet pe axa x Adaug o etichet pe axa y Adaug o etichet pe axa z Adaug o legend Afieaz un text la o locaie specificat Plaseaz 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)

69

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. 70

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 Descriere Bar Barh bar3 bar3h Area Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale 3-D Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale tridimensionale 3-D Afieaz 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 8 9 5 4 bar(Y) 2 7 8 5 3 1 3 6 5 2];

71

Grupele de coloane reprezint linii din 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).

Ultimul grup de bare reprezint ultima linie din Y

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

Ultimul grup de bare reprezint ultima linie

72

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.

73

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. 74

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 1.Pregtirea datelor 2. Selectarea ferestrei grafice i poziionarea graficului n fereastr 3. Apelarea unei funcii de plotare 3-D 4a. Setarea unei hri de culori i a unui algoritm de umbrire 4b. Adugarea unei iluminri Instruciuni
Z = peaks(20); figure(1) subplot(2,1,2) h = surf(Z); colormap hot shading interp set(h,'EdgeColor','k') 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') view([30,25]) set(gca,'CameraViewAngleMode','Manual')

5. Setarea unui punct de vizualizare

6. Setarea limitelor axelor axis([5 15 5 15 -8 8]) set(gca'ZTickLabel','Negative||Positive') i a marcajelor 7. Setarea proporionalitii


set(gca,'PlotBoxAspectRatio',... [2.5 2.5 1])

8. Completarea graficului xlabel('X Axis') cu etichete, legend, text ylabel('Y Axis')

zlabel('Function Value') title('Peaks') set(gcf,'PaperPositionMode','auto') print -dps2

9. Operaiuni de tiprire

75

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: Funcie
mesh, surf meshc, surfc meshz pcolor surfl surface

Utilizare Trasare a unei suprafee Trasarea suprafeei, inclusiv conturul Trasarea suprafeei, inclusiv planul de referin Plotare plan a suprafeei (valorile sunt proporionale doar cu culoarea) Trasarea suprafeei luminat din direcia specificat Funcie 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)

76

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

77

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. 78

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: 79

Meniurile pop-up permit alegerea dintre mai multe articole predefinite


meniuri pop-up, ferestre de tip text editabile, ferestre de verificare (check boxes), butoane, text static, cadre etc.

Utilizatorul poate introduce valori numerice n astfel de ferestre de tip text editabile

Obiectele Uicontrol sunt copiii obiectelor de tip figur i de sunt independente de boxes) obiectele de tip Ferestrele verificare (check axe. indic alegerea fcut de utilizator 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 Cadrele existente realizeaz grupri pe bara de meniuri a ferestrei grafice, la dreapta meniurilor definite de logice sistem. pentru Imaginea urmtoare arat partea de sus a unei figuri MS-Windows care are definite trei meniuri diverse tipuri de comenzi de top Uimenu (intitulate Workspace, Figure, i Axes). Dou niveluri de submeniuri sunt vizibile n Textele statice permit etichetarea meniul Workspace.

diverselor tipuri de controale Butoanele indic o anumit aciune

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.

80

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: Proprietate
BusyAction ButtonDownFcn Children Clipping CreateFcn DeleteFcn HandleVisibility Interruptible Parent Selected SelectionHighlight Tag

Informaii coninute Controleaz modul n care MATLAB-ul apeleaz rutinele de ntreruperi definite pentru un anumit obiect. Rutin executat la apsarea unui buton. Manipuleaz toate obiectele copil ale obiectului. Activare/dezactivare mod tiere. Rutin executat atunci cnd acest tip de obiect este creat. Rutin executat atunci cnd se d o comand de distrugere (tergere) a obiectului. Permite controlul obiectului de la linia de comand sau din rutine de apelare. Determin cnd o rutin poate fi ntrerupt printr-o rutin invocat ulterior. Printele obiectului. Indic dac obiectul este selectat. Specific dac este indicat starea de selectare. Etichet a unui obiect specificat de utilizator. 81

Type UserData Visible

Tipul obiectului (figur, linie, text etc.) Orice dat care se dorete a fi asociat obiectului. Determin 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: Funcie
axes

Descriere obiect Sistem de coordonate carteziene care scaleaz i orienteaz obiectele copil: imagine, lumin, linie, patch, suprafa i text. figure Fereastr pentru afiare grafic. image Imagine 2-D definit prin indicarea hrii culorilor sau valori RGB. Datele pot fi pe 8 bii sau dubl precizie. light Surs direcionat de lumin, localizat ntre axe, care influeneaz suprafeele i obiectele patch. line Linie format prin conectarea coordonatelor prin segmente drepte ntr-o secven specificat. patch Form poligonal creat prin interpretarea fiecrei coloane din matricile de coordonate ca un poligon separat. rectangle Arie 2-D umplut (plin), cu form de la dreptunghi la elips. surface Suprafa cu fee dreptunghiulare, definite prin interpretarea elementelor matricei ca nlimi deasupra planului. text ir de caractere localizat n sistemul de coordonate al axelor. uicontextmenu Meniu context ce poate fi asociat cu alt obiect grafic. uicontrol Interfa utilizator programabil (butoane, liste etc.). uimenu Meniu 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]);

82

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 toolbox-uri 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 83

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 toolboxului 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 84

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 toolbox-ului 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 85

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.) 86

Faciliti: o Calcul matematic: o Algebr liniar: o Simplificri: o Soluionarea ecuaiilor: o Aritmetic cu precizie variabil: o Transformri: o Funcii matematice speciale: Diferenieri, integrri, limite, sume, serii Taylor Inverse, determinani, valori proprii, forme canonice ale matricilor Metode de simplificare a expresiilor algebrice Soluii simbolice i numerice ale ecuaiilor algebrice i difereniale Evaluarea numeric a expresiilor matematice cu precizie specificat Fourier, Laplace, Transformarea z i inversele lor Funcii speciale ale matematicilor aplicate clasice

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 mouse-ul. 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.

87

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.

88

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.

89

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.

90

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).

91

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.

92

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.

93

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.

94

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:
y = f 0 ( t , x ,u ) xd k +1 = f u ( t , x ,u ) = f d ( t , x ,u ) xc xc unde x = xdk iesirea actualizare derivata

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. 95

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 , Addison-Wesley Publ., SUA, 1995. 3. Marchand P. Graphics and GUIs with MATLAB, CRC Press, SUA, 1999. 4. *** 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 CAP. 3. MEDIUL DE LUCRU MATLAB 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 CAP. 4. EDITORUL/DEBUGGER-UL I PROFILER-UL MATLAB 4.1. Editorul/Debugger-ul MATLAB 4.2. Profiler-ul MATLAB CAP. 5. MATRICI, ALGEBR LINIAR, POLINOAME, TEHNICI DE INTERPOLARE 5.1. Matricile n MATLAB 5.2. Rezolvarea ecuaiilor liniare 5.3. Inverse i determinani 5.4. Funcii de matrice. Valori proprii 96 1 5 5 8 12 17 23 25 25 27 27 29 32 34 36 38 42 43 43 51 56 56 58 60 61

5.5. Reprezentarea polinoamelor. Interpolarea CAP. 6. REPREZENTAREA FUNCIILOR. ECUAII DIFERENIALE 6.1. Reprezentarea i plotarea funciilor matematice 6.2. Minimizarea funciilor i gsirea zerourilor 6.3. Integrarea numeric 6.4. Rezolvarea ecuaiilor difereniale CAP. 7. PROGRAMAREA N LIMBAJUL MATLAB 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 CAP. 8. GRAFICE I INTERFEE GRAFICE N MATLAB 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) 8.2. Handle Graphics i Interfee Grafice n MATLAB (GUI) 8.2.1. Graficele privite ca obiecte. Ierarhia obiectelor 8.2.2. Proprietile obiectelor grafice 8.2.3. Funcii de generare a obiectelor grafice CAP. 9. PREZENTAREA TOOLBOX-URILOR MATLAB 9.1. Toolbox-ul Comunicaii (Communications Toolbox) 9.2. Toolbox-ul pentru Sisteme de Conducere Automat (Control System) 9.3. Toolbox-ul pentru Baze de Date (Database Toolbox) 9.4. Toolbox-ul de Procesare a Semnalelor (Signal Processing Toolbox) 9.5. Toolbox-ul DSP Blockset 9.6. Toolbox-ul Finane (Financial Toolbox) 9.7. Toolbox-ul de Procesare a Imaginilor (Image Processing Toolbox) 9.8. Toolbox-ul Optimizare (Optimization Toolbox) 9.9. Toolbox-ul pentru Sisteme de Putere (Power System Blockset) 9.10. Toolbox-ul Stateflow (Diagrame de stare) 9.11. Toolbox-ul de Statistic (Statistics Toolbox) 9.12. Toolbox-ul pentru Calcul Simbolic (Symbolic Math Toolbox) CAP. 10. PACHETUL DE MODELARE I SIMULARE SIMULINK 10.1. Rularea unui model SIMULINK demonstrativ 10.2. Crearea modelelor SIMULINK 10.3. Rularea simulrilor n SIMULINK 10.4. Modul de lucru al unui program SIMULINK BIBLIOGRAFIE 97

63 69 69 71 73 75 78 78 80 84 85 86 86 87 87 88 96 101 105 105 109 110 112 112 112 113 113 113 114 114 114 115 115 116 116 117 117 120 125 127 97