Sunteți pe pagina 1din 10

Prelucrarea Informatiei

Semestrul I - 2012/2013

Introducere MATLAB n
Grigore Stamatescu grigore.stamatescu@upb.ro
MATLAB este unul dintre cele mai rspndite programe, special teoria reglrii automate, pentru a a n n a calculul tiintic i numeric. Pe lng calculul efectiv, MATLAB ofer i posibiliti de reprezentare grac s s a a as at a i programarea propriilor rutine. Este vorba de un sistem interactiv cu matricea ca element fundamental. s Denumirea MATLAB provine de la Matrix Laboratory. SIMULINK este un mediu de operare grac, bazat pe MATLAB prin intermediul cruia pot modelate i simulate sisteme complexe. Calculele matriceale a s necesare sunt realizate automat de MATLAB. Dezvoltatorul ambelor produse este rma The Math Works Inc., SUA. Scopul acestei lucrri este o familiarizare cu mediul de lucru MATLAB. Instructiunile de lucru a sunt redactate pe baza versiunii MATLAB 7.11.0 (R2010b). cazul care lucrati cu o versiune diferit In n a pot aprea modicri structura meniurilor i a csutelor de dialog. a a n s a

Primii pai s

Fereastra de comand a Dup lansarea MATLAB apare spatiul de lucru MATLAB (vezi 1). Acesta este compus din mai multe a ferestre, dintre care fereastra de comenzi (Matlab Command Window) cu linia de comand MATLAB a , ocup cea mai mare suprafat. Fereastra de comenzi este utilizat la introducerea de variabile i rularea a a a s comenzilor, functiilor i rutinelor. Fiecare rnd de comand este terminat cu un Return iar expresia este s a a evaluat imediat. Exemplele prezentate acest document a n ncep dup simbolul liniei de comand. Comena a tariile, cele care au fat simbolul procent %, nu trebuie introduse. n a Incercati s rulati urmtoarele exemple: a a 57 % Atribuirea variabilei standard ans a = 3 pi % Atribuirea variabilei a b = a/5 c=ab b = 1 : 3 : 20 plot(b) help cos b = 2cos(b) Ultimul rnd produce unul dintre cele mai des alnite mesaje de eroare: missing operator, comma, or a nt semi-colon. acest caz lipsete operatorul pentru In s nmultirea dintre 2 i cosinus. Comanda corect are s a forma: b = 2cos(b) Aarea rezultatului pe ecran poate suprimat print adugarea unui ; la sfritul rndului. Testati aceast s a a as a a functionalitate prin repetarea comenzii cu ;. locul reintroducerii comenzii de la tastatur, poate folosit i sgeata sus , prin care se pot accesa In a a s a rapid comenzile anterioare. Aceste comenzi pot editate nainte de apsarea tastei Return . Se poate a opera i mai rapid atunci cnd este cunoscut prima liter a comenzii cutate. La introducerea acesteia s a a a a n linia de comand, urmat de apsarea tastei , vor aate numai comenzile care a a a s ncep cu aceast liter. a a Ce comand este aat la introducerea p ? a s a Paleta de simboluri a ferestrei de comenzi Paleta de simboluri (vezi g. 1) permite accesul rapid la functionaliti des utilizate ale mediului de dez at voltare. Semnicatia simbolurilor individuale este descris de la stnga la dreapta: a a Pornirea editorului MATLAB ntr-o fereastr nou a a Aceast operatie este similar cu selectarea din meniu a File:New:M.File. Editorul precum i rea a s alizarea respectiv modicarea unor rutine proprii, vor prezentate ulterior. Deschiderea unui document MATLAB existen editorul MATLAB n 1 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

Figure 1: Spatiul de lucru MATLAB Este aat o selectie de iere cu extensiile: .m pentru rutine MATLAB, .mdl pentru modele s a s SIMULINK sau .g pentru guri MATLAB. Editorul permite a i modicarea oricror iere ASCII. ns s a s Decupare, copiere i lipire s Undo i Redo s Lansare SIMULINK Lansare GUIDE Un editor de interfete grace cu utilizatorul Lansare Proler pentru optimizarea ierelor M s Deschiderea ferestrei de ajutor Fereastra de ajutor contine acelai text referitor la o functie arbitrar fname precum cel care apare s a la introducerea help fname linia de comand. Textul nu apare a linia de comand ci n a ns n a ntr-o fereastr dedicat, ceea ce permite navigarea uoar a a s a ntre diferite comenzi. Calea actual a Aici sunt cutate ierele necesare i sunt salvate rezultatele operrii. Dac o cutare nu are succes a s s a a a calea actual este continuta la celelalte adrese din calea de cutare. Lista de ci poate aat i n a a a a s as modicat din meniul File - Set Path. acest context, sunt date o serie de comenzi utile pentru a In operarea cu directoare: cd cd .. %Aeaz calea actual s a a %Trecere directorul superior n 2 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

cd work %Trecere directorul inferior work n dir %Listeaz toate ierele din directorul actual a s what %Listeaz toate ierele MATLAB/SIMULINK din directorul actual a s

Ferestre suplimentare Toate variabilele utilizate sunt salvate automat fereastra Workspace. Aici sunt aate i dimensiunile i n s s s tipul acestor variabile. Printr-un dublu clic pe numele variabilei este aat i poate modicat continutul s s acesteia. Fereastra Current Directory prezint continutul directorului de lucru actual a ntr-o structur arborescent. a a Sunt posibile operatiile uzuale de: deschidere, tergere, redenumire i copiere. s s fereastra Command History este aat o list a ultimelor comenzi introduse. Printr-un dublu clic pe In s a a o comand aceasta este rulat din nou. a a Ajutor Se alnesc adesea situatii care este necesar descrierea i, special, sintaxa unei functii. Pentru aceasta nt n a s n este folosit comanda help (sau doc pentru detalii suplimentare) urmat de numele functiei: a a help cos help linspace help plot doc cos lookfor plot Comanda lookfor realizeaz o cutare dup cuvntul introdus primele rnduri ale tuturor ierelor din a a a a n a s calea de cutare. a Exist mai multe modaliti care pot utilizate pentru a obtine ajutor referitor la introducerea comenzilor: a at Help Window O fereastr care prezint textul de ajutor aferent unei functii (vezi paleta de simboluri). Prin dublu a a clic pe unul din elementele listei Help Topics poate parcurs un domeniu de interes. Fereastra de ajutor apare i la introducerea comenzii helpwin linia de comand. s n a Help Desk Fereastra Help Desk contine iere format .html sau .pdf cu informatii complete despre ecare s n functie. Aceasta apare i la introducerea comenzii helpdesk linia de comand. s n a Exemple i demonstratii s Fereastra de demonstratii ofer o list de exemple detaliate incluse cu mediul de dezvoltare MATLAB. a a Aceasta apare i la introducerea comenzii demo linia de comand. s n a Exercitii 1.1. Modicati calea de cutare prin adugarea unui director de lucru personalizat de forma Nume Grupa. a a 1.2. Descrieti pe scurt functionalitatea i sintaxa comenzilor: exp, grid, gure i hold. s s 1.3. Prezentati functionalitatea comenzilor: which, pause i disp. s 1.4. Aati cu ajutorul comenzii linspace o serie de 22 de numere de la 1.5 la 9. s 1.5. Deschideti un ier nou editor i introduceti comenzile: s n s 3 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

% Aceasta e s t e prima i n c e r c a r e ! cd disp ( S a l u t ! ) a=57 b=57;

Salvati ierul directorul de lucru cu numele exemplu1.m. s n Inchideti editorul. Introduceti linia n de comand comanda exemplu1 i help exemplu1.m. Care este functionalitatea noii comenzi? a s Accesati Current Directory. Deschideti ierul exemplu1.m prin dublu clic i apsati tasta F5. s s a (Astfel ierul este salvat i rulat imediat.) s s

Constante i Variabile s

Constante MATLAB a fost dezvoltat special pentru calculul matricial. O matrice reprezint pentru MATLAB un a cmp cu valori numerice. Cuvintele (strings) sunt cmpuri numerice, pentru care elementele contin codurile a a ASCII ale caracterelor (valori ntregi, pozitive). MATLAB cunoate i alte metode pentru salvarea datelor s s alfanumerice, aceast etap vom rmne a la reprezentarea matricilor numerice. n a a a a ns Constantele (scalarii) sunt reprezentate intern ca matrice 1x1. Vectorii sunt matrice 1xn (vectori linie) sau nx1 (vectori coloan). cazul calculelor matriciale (e.g. a In nmultirea) trebuie inut t ntotdeauna cont de ce se dorete a calculat i ce tip de vectori sunt folositi. Altfel vor obtinute mesaje de eroare sau rezultate s s care nu corespund cu intentia initial. a Matricile cu mai mult de un element sunt introduse pe linii, ncadrate paranteze ptrate []. interiorul n a In unei matrici se folosesc virgule sau spatii goale pentru separarea coloanelor i ; pentru separarea liniilor: s 5 3.14159 2.0e-10 [1,2,3]

% [1 2 3] Vector linie

1 a [4;5;6] % 2 Vector coloan 3 1 2 3 A=[1,2,3;4,5,6;7,8,9] % 4 5 6 Matrice 7 8 9 b=[1,2,3] c=test Vectorii pot introdui i, mai rapid, urmtoarea form: s s n a a vector = [primul element:increment:ultimul element]; Vectorul astfel generat va contine elemente echidistante. Incrementul poate i negativ sau, cazul care s n n este 1, poate omis. [1:10] [1:-1.5:-8] Pentru a genera vectori, pot folosite i functiile linspace i logspace. linspace este cunoscut din sectiunea s s a precedent. Cum se diferentiaz logspace de linspace? a a 4 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

Variabile Precum orice alt limbaj de programare, MATLAB permite denirea de variabile. Atribuirea se face prin n semnul egal =. Fiecare ir de caractere, ce s ncepe cu o liter i nu include simboluri speciale, poate folosit as ca nume de variabil. Este fcut diferenta a a a ntre litere mari i litere mici. MATLAB nu necesit declarri s a a initiale; o variabil este creat automat atunci cnd este plasat partea din dreapta a unei alocri. a a a a n a In partea din dreapta pot utilizate numai variabile sau constante create anterior. Exist posibilitatea alocrilor a a recursive. Variabilele MATLAB se bazeaz pe matrici. Acestea pot contine att cifre ct i litere. Pe lng cifre i a a a s a a s litere, mai exist celule i structuri. a s Analog ferestrei Workspace, prin comanda who + numele variabilei utilizate i whos + numele i dimens s siunea variabilei utilizate, este aat continutul acesteia fereastra de comenzi. s n bA d=2A d who whos Suplimentar, exist un numr de variabile de sistem rezervate, a cror modicare nu este permis: a a a a ans contine rezultatul ultimei comenzi dac nu a fost fcut nicio alocare ctre o alt variabil. a a a a a a pi contine numrul . a eps contine numrul 252 = 2.22e 16. a realmin, realmax sunt cele mai mici, respectiv cele mai mari valori reale disponibile MATLAB. n Inf innit, rezultatul operatiei 1/0 NaN (Not a Number) rezultatul operatiei 0/0 i,j contin ambele unitatea imaginar 1 pentru introducerea de numere complexe. a cazul care o variabil de sistem vname este suprascris cu o alt valoare, aceasta poate resetat la In n a a a a valoarea original prin comanda clear vname, care terge variabila redenit din spatiul de lucru. a s a pi=2.3 clear pi pi complex=3 + 2 i Dac se dorete accesul la valori individuale ale elementelor unei matrici, numrul liniei i al coloanei corea s a s spunztoare trebuie s e puse a a ntre paranteze rotunde. Numrul liniei i al coloanei pot i vectori, pentru a s s a accesa simultan mai multe linii sau coloane. A(1,3) A(1,:) A(:,2) A([1 3],1) % : reprezint linii complete a % : reprezint coloane complete a

5 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

Matricile logice ajut la extragerea de valori care a ndeplinesc o serie de conditii, dintr-o matrice A. Supli mentar, matricea logic trebuie s aib aceleai dimensiuni i constrngeri, e.g. valori a a a s s a ntre 2 i 5. Ulterior, s aceste valori pot extrase. Exemplul urmtor ilustreaz modul de lucru: a a X=(A>=2&A<=5) A(X) Cu ajutorul unei matrici vide [] se pot terge linii sau coloane dintr-o alt matrice: s a A(:,2)=[] Stergerea celei de-a doua coloane a matricii A. arcare, salvare i tergere Inc s s Urmtoarele comenzi servesc la administrarea variabilelor din spatiu de lucru i punerea lor la dispozitia a s utilizatorului pentru sesiuni ulterioare. Acestea sunt: clear: terge toate variabilele din spatiul de lucru s clear variable: terge variable din spatiul de lucru s save: salveaz toate variabilele ierul matlab.mat a n s save fname: salveaz toate variabilele ierul fname.mat a n s save fname x y z: salveaz variabilele x, y i z ierul fname.mat a s n s load: ncarc toate variabilele din ierul matlab.mat spatiul de lucru a s n load fname: ncarc toate variabilele din ierul fname.mat spatiul de lucru a s n load fname x y z: ncarc variabilele x, y i z din ierul fname.mat spatiul de lucru a s s n Exercitii 1 2.1. Creati dou variabile t=[2 4 6 . . . 14], y= a 5 7

i modicati-le continutul printr-un dublu clic s 2 5 pe numele variabilei din fereastra corespunztoare din spatiul de lucru. Vericati modicarea prin a introducerea numelui variabilei linia de comand. n a

2.2. Modicati numele lui y ymat. n 2.3. Creati un vector linie t1, cu valori de la 0 la 1 i incrementul 0.01. s 2.4. Creati un vector coloan t2 cu o distributie logaritmic i valori de la 103 la 100 . a as 2.5. Extrageti prima linie L1 i cea de-a treia coloan C3 din ymat. s a 2.6. Extrageti matricea ymic, care contine prima i cea de-a treia coloan din ymat. s a 2.7. Extrageti vectorul interm cu valorile mai mari de 3 din matricea ymat. 2.8. Stergeti cea de-a doua linie din ymat. 2.9. Salvati toate variabilele ntr-un ier i tergeti spatiul de lucru prin comanda clear all. Vericati s s s continutul spatiului de lucru (e.g. who). arcati variabilele din ier Inc s napoi spatiul de lucru. n

6 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

Operatori i functii s

Operatori Partea din dreapta a unei expresii MATLAB poate contine o formul algebric complicat. Constantele i a a a s variabilele cunoscute trebuie conectate logic prin intermediul operatorilor. cazul operatorilor aritmetici, pe In lng cei comuni (+,-,*,/), mai sunt folositi i ridicarea la putere () i transpunerea (). Suplimentar, exist a a s s a i operatorii logici: negare i &, sau |, sau exclusiv xor() i operatorii relativi: egalitate ==, inegalitate =, s ,s s <, , >, . Prin urmtoarea comand este aat o imagine de ansamblu a operatorilor: a a s a help ops Atentie: Operatorii fac referire la calcule matriciale. Pentru a utiliza operatorii pe elementele individuale ale unei matrici, trebuie plasat un punct (.) fata operatorului! n A=[1,2,3;4,5,6;7,8,0] b b=b b+b bb bb b.b 2A AA A2 A2 Functii Dup cum s-a putut vedea din sectiunile anterioare, MATLAB include un numr mare de functii din domenii a a variate. Apelarea unei functii utilizeaz numele acesteia i un numr de parametri. Rezultatul poate stocat a s a ntr-o variabil. O imagine de ansamblu asupra functiilor matematice standard, ofer comanda help elfun. a a help elfun cos(0) 4 atan(1) bexp=exp(b) % pi, atan(x) = tan1 (x) % Functia exponential , aplicat ecrui element din b a a a % Vector linie % Vector coloan a % Sum de vectori a % Produs scalar % Eroare datorat dimensiunilor incompatibile a % Multiplicare la nivel de element % Inmultire cu un scalar % A ori A i s %A la ptrat, sunt identice a % dar nu i acest caz! s n

Dou functii foarte utile sunt size i length. size returneaz numrul de linii i coloane al unei matrici i a s a a s s permite astfel diferentierea vectorilor linie de vectorii coloan. length returneaz lungimea unui vector i, a a s cazul matricilor, valoarea mai mare dintre numrul de linii i cel al coloanelor. n a s A=[1,2,3;4,5,6] size(A) length(A) size(b) length(b) Comanda help elmat aeaz o imagine de ansamblu asupra matricilor standard i a functiilor de manipulare s a s ale matricilor precum i asupra functiilor din domeniul algebrei liniare help matfun. Functiile ones i zeros, s s de exemplu, genereaz matrici numai cu elemente 1 resp. 0 i functia eye genereaz matricea unitate. a s a

7 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

help elmat D=ones(3,4) E=zeros(5) F=eye(4) G=eye(4,3) help matfun Exercitii 3.1. Determinati numrul de linii i de coloane ale matricilor D, E, F i G. a s s

Reprezentri grace a

MATLAB permite realizarea unei game variante de reprezentri grace ale datelor. Cele mai importante a functii grace sunt: curbe 2D: plot, fplot, ezplot, subplot, stem, stairs curbe 3D: plot3, stem3, surf, mesh, contour Comanda plot Pentru reprezentarea grac a unui vector y se folosete comanda plot(y). acest caz, elementele lui y (y1 , a s In y2 , y3 ,. . . ) sunt reprezentate bidimensional mpreun cu indicii lor (1,2,3,. . . ). Dac se dorete utilizarea unei a a s alte axe x, de exemplu timpul t, acest vector t trebuie adgat ca parametru apelarea functiei, plot(t,y). a n Comanda corespunztoare pentru reprezentarea tridimensional contine toti cei trei vectori, plot3(t,x,y). a a t=linspace(-pi,pi,30); y1=sin(2t); y2=cos(5*t); plot(y1) plot(t,y1) plot(y1,t) plot3(t,y1,y2) Gracele sunt reprezentate guri/gures. Acestea reprezint ferestre individuale care, pe lng curbe, n a a a includ i axele i diferite meniuri pentru modicarea reprezentrii grace. Dac exist o fereastr de gur s s a a a a a deja deschis, curba va reprezentat aceasta i vechea curb va tears. Cu hold sunt pstrate vechile a a n s a s a a curbe i cele noi sunt desenate peste acestea. Dac nu exist o fereastr de gur deja deschis sau este s a a a a a rulat comanda gure a nainte de plot, va deschis o nou fereastr. a a a Majoritatea setrilor de grac nu se regsesc numai meniul gurii ci pot modicate i prin fereastra de a a n s comenzi. Comenzi utile sunt: grid on/o box on/o axis on/o % activeaz dezactiveaz rasterul de fundal a a % activeaz dezactiveaz un container de a a ncadrare % activeaz dezactiveaz reprezentarea axelor a a % Pentru comparatie % Pentru comparatie

Dac nu este specicat parametrul on/o cazul primelor dou comenzi, este realizat o comutare a n a a ntre cele dou stri. a a Comanda plot poate primi un argument suplimentar, un ir de caractere, e.g. plot(t,y1,g). acest ir s In s de caractere sunt incluse informatii despre culoare, reprezentarea liniilor i a punctelor de date. Pentru s 8 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

o descriere complet a optiunilor disponibile, apelati descrierea functiilor prin help plot, help graph2d, a help graph3d. O fereastr de gur poate , similar cu o matrice, artit mai multe sub-guri, cu comanda subplot: a a mp a n gure % deschide o nou fereastr de gur a a a

subplot(2,1,1); plot(t,y1) % subplot partajeaz fereastra dou linii i o coloan i alege primul a n a s a s element (numrarea este fcut de la stnga la dreapta i de sus jos) pentru reprezentarea primei curbe a a a a s n subplot(2,1,2); plot(y1,t) % subplot folosete aceeai partajare, alege a a doua fereastr s s ns a

Pentru inscriptionare, exist urmtoarele functii, ce au efect asupra gracului curent: a a title(Grac sugestiv) xlabel(Timp [s]) % inscriptioneaz titlul gracului a % inscriptioneaz axa x a

ylabel(Distant [m]) a % inscriptioneaz axa y a cazul care gracul contine mai multe curbe, legenda poate generat cu ajutorul comenzii Curba 1, In n a Curba 2, Curba 3. Alte tipuri de grace Functiile stem respectiv stem3 i stairs sunt adecvate pentru reprezentarea semnalelor discrete. Fiecare s punct este reprezentat printr-o tij vertical cu un cerc la capt. Stairs este functia treapt i unete punctele a a a as s individuale precum o scar, valoarea punctul anterior ind pstrat pn la urmtoarul. a a a a a a fplot calculeaz a ntr-un interval dat valorile i evolutia unei functii, fr a cunoate numrul exact de puncte. s aa s a stem(y1) stairs(t,y1) fplot(3sin(r).exp(-r/(pi/4)),[0,2pi]); Reprezentarea suprafetelor Pentru reprezentarea suprafetelor sunt folosite functiile mesh i surf ace: s mesh deseneaz o retea colorat, ale crei noduri sunt punctele functiei reprezentate. a a a surf coloreaz suplimentar i textura plasei a s Paleta de culori este stabilit prin comanda colormap i poate distins cu ajutorul colorbar. a s a Prin intermediul unui exemplu este claricat cum pot generati vectorii necesari. Dorim s reprezentm a a suprafata functiei z = 2x + 3y, unde x i y iau urmtoarele valori: s a x=[-1,0,1,2] y=[0,0.1,0.2,0.3,0.4,0.5] Deoarece x contine 4 valori iar y 6 valori, z va lua 6X4=24 de valori. Suplimentar, deoarece ecare punct este reprezentat printr-o triplet (xi , yi , zi ), trebuie generate matricile X i Y care contin ecare linie, a s n respectiv ecare coloan, valorile lui x i y. Aceasta se realizeaz cel mai simplu prin comanda meshgrid. a s a Ulterior este calculat z i este desenat suprafata: s a x=[-1:2]; y=[0:0.1:0.5] [X,Y]=meshgrid(x,y); Z=-2.X+3.Y; mesh(X,Y,Z) % Denirea vectorilor x i y s % Generarea matricilor X i Y s

% Calculul matricii Z % sau surf(X,Y,Z)

9 din 10

Prelucrarea Informatiei Semestrul I - 2012/2013

Introducere MATLAB n Data: 11.10.2012

Alte functii relevante pentru desenarea suprafetelor sunt: compass, contour, contour3, surfc, waterfall, pcolor, view. Exercitii 1 2 3 ... 6 T

n 4.1. Generati matricea graphA= 1 4 9 ... 36 i reprezentati-o grac. Introduceti grac s 1 8 27 ... 216 o legend cu textele liniar, ptratic i cubic. Activati rasterul de fundal. Setati prin meniul Edit: a a s Axes Properties scalarea axei y ca logaritmic. Dati gracului titlul graphA. a 4.2. Reprezentati grac functia c = y sin(x) pentru x de la -10 la 10 (increment 1) i y de la 0 la 30 s (increment 3) i setati suprafata de tip plas. s a Referinte [1] B. Hahn, D. Valentine, Essential MATLAB for Engineers and Scientists, Third Edition, Elsevier, 2007.

10 din 10

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