Sunteți pe pagina 1din 20

Lucrarea nr. 1 Introducere n programarea MATLAB 1.

Noiuni generale MATLAB-ul este un pachet de programe de nalt performan, dedicat calculului numeric i reprezentrilor grafice n domeniul tiinei i ingineriei. El integreaz analiza numeric, calculul matriceal, procesarea semnalului i reprezentrile grafice, ntr-un mediu uor de nvat i folosit, n care enunurile problemelor i rezolvrile acestora sunt exprimate n modul cel mai natural posibil, aa cum sunt scrise matematic fr a fi necesar programarea tradiional. Cea mai important caracteristic a MATLAB-ului este uurina cu care poate fi extins. Datorit acestui fapt orice utilizator poate aduga propriile programe, scrise n MATLAB, la fiierele originale, dezvoltnd astfel aplicaii specifice domeniului n care lucreaz. MATLAB-ul include aplicaii specifice, numite TOOLBOX-uri. Acestea sunt colecii extinse de funcii MATLAB (fiiere M) care dezvolt mediul de programare de la o versiune la alta, pentru a rezolva probleme din domenii variate.

2. Matrici, vectori i scalari. Declaraii i variabile. Elementul de baz cu care lucreaz MATLAB-ul este matricea. Cu acestea se pot rezolva probleme fr a fi necesar scrierea unui program ntr-un limbaj de programare. n MATLAB scalarii sunt asimilai matricilor de dimensiune (1x1) i vectorii sunt asimilai matricilor de dimensiune (1xn) sau (nx1). Elementele unei matrici A pot fi identificate prin notaia A(i,j) i semnific elementul de la intersecia liniei i cu coloana j. Elementele unei matrici pot fi numere reale sau complexe, precum i orice expresie MATLAB. Introducerea explicit (de la tastatur) a unei matrici se realizeaz innd cont de urmtoarele reguli: Elementele unei linii trebuie separate prin blanc-uri sau virgule; Liniile se separ prin punct-virgul ; ; Elementele matricei sunt cuprinse ntre paranteze drepte [ ]. Exemplu: O matrice introdus cu secvena A=[2 3 4;44 3 2] returneaz rezultatul: A= 2 3 4 44 3 2 2

Dac se asigneaz o valoare unui element care ocup o poziie n afara dimensiunii maxime a matricei sau vectorului referit, dimensiunea acestuia este mrit automat pn la valoarea indicelui noului element, iar elementele nedefinite sunt setate la valoarea zero. Exemplu: Fie A=[2 3;4 6] Instruciunea A(3,3)=8 genereaz: A=[2 3 0;4 6 0; 0 0 8] MATLAB-ul este un limbaj de expresii. Expresiile tiprite de utilizator sunt interpretate i utilizate. Instruciunile MATLAB sunt, de cele mai multe ori de forma: variabil = expresie sau , mai simplu: expresie Orice instruciune se termin n mod normal cu Enter. Dac ultimul caracter al instruciunii este punct-virgul ; , instruciunea este executat, dar tiprirea rezultatului este suprimat. Dac expresia este aa de mare nct declaraia nu ncape pe o singur linie, se utilizeaz semnul ...(trei puncte) urmat de Enter, pentru a preciza ca instruciunea se continu pe linia urmtoare.

3. Structura programelor MATLAB MATLAB-ul lucreaz fie n modul linie de comand, situaie n care fiecare linie este prelucrat imediat i rezultatele sunt afiate, fie cu programe coninute n fiiere. Aceste dou moduri formeaz mpreun un mediu de programare. Fiierele ce conin instruciuni MATLAB se numesc fiiere-M (deoarece au extensia .m) i sunt programe MATLAB. Un fiier-M const dintr-o succesiune de instruciuni MATLAB , cu posibilitatea apelrii altor fiiere-M precum i a apelrii recursive. Un program MATLAB poate fi scris sub forma fiierelor script sau a fiierelor function. Ambele tipuri de fiiere sunt scrise n format ASCII, iar algoritmul care a fost implementat poate fi urmrit cu foarte mult uurin, dac se cunosc conveniile i sintaxa MATLAB. Aceste tipuri de fiiere, obligatoriu cu extensia .m, permit crearea unor funcii noi care le pot completa pe cele deja existente. Prin aceast facilitate, MATLAB-ul poate fi extins la aplicaii specifice utilizatorului, care are posibilitatea s scrie noi proceduri. 3.1. Fiierele script Un fiier script este un fiier extern care conine o secven de comenzi MATLAB. Prin apelarea numelui fiierului, se execut secvena MATLAB coninut n aceasta. Dup execuia complet a unui fiier script, variabilele cu care acesta a operat rmn n zona de 4

memorie a aplicaiei. Aceste fiiere nu permit integrarea n programe mari, realizate pe principiul modularizrii. Fiierele script sunt folosite pentru rezolvarea unor probleme care cer comenzi succesive att de lungi, nct ar putea deveni greoaie pentru lucrul n mod interactiv, adic n modul linie de comand. 3.2. Fiierele funcie Dac prima linie a fiierului-M conine cuvntul function, fiierul respectiv este declarat ca fiier funcie. O funcie difer de un script prin faptul c poate lucra cu argumente. Variabilele definite i manipulate n interiorul fiierului funcie sunt localizate la nivelul acesteia. Prin urmare, la terminarea execuiei unei funcii, n memoria calculatorului rmn dect variabilele de ieire ale acesteia. Fiierele funcie sunt utilizate pentru extinderea MATLAB-ului, adic pentru crearea unor funcii noi MATLAB. Forma general a primei linii a unui fiier funcie este:
function[param_ieire]=nume_funcie(param_intrare)

unde: function este cuvntul cheie care declar fiierul ca fiier funcie (prezena lui este obligatorie); nume_funcie numele funcie, adic numele sub care se salveaz fiierul fr extensie. Trebuie s avem grij s nu coincid cu cel al unui fiier deja existent;

param_ieire parametrii de ieire care trebuie separai prin virgul i cuprini ntre paranteze drepte. Dac funcia nu are parametri de ieire, parantenzele drepte i semnul egal nu mai au sens. param_intrare parametrii de intrare care trebuie separai prin virgul i cuprini ntre paranteze rotund. Dac funcia nu are parametri de intrare, parantenzele rotunde i semnul egal nu mai au sens. Aceste fiiere pot fi adugate ca funcii noi n MATLAB. Comenzile i funciile care sunt utilizate de noua funcie sunt nregistrate ntr-un fiier cu extensia .m. Dac vrem s introducem un comentariu, n cadrul unui fiier, vom preceda comentariul respectiv de semnul procent % . Acest lucru e foarte util de reinut, ntruct, atunci cnd crem un fiier funcie, este bine ca pe liniile care urmeaz imediat dup linia de declarare a fiierului funcie, s introducem un comentariu prin care s dm informaii despre fiierul respectiv. Astfel, atunci cnd un alt utilizator dorete s afle informaii despre fiierul respectiv, poate tasta: >>help nume_fisier i pe ecranul de comenzi va aprea comentariul introdus n fiier. 4. Generarea vectorilor

4.1. Generarea vectorilor cu pas liniar

Pentru a genera un vector cu pas liniar MATLAB-ul ofer dou metode: Dac se cunosc limitele intervalului (amin i amax) i pasul (pas) dintre dou elemente, se genereaz vectorul cu instruciunea: x = amin : pas : amax Dac pasul e negativ atunci e necesar ca amin > amax. Dac se omite specificarea valorii pasului, atunci acesta va fi luat implicit egal cu unitatea. Dac se cunosc limitele intervalului (amin i amax) i numrul de elemente (N) ale vectorului generat cu pas liniar, atunci se folosete instruciunea: x = linspace(amin, amax, N) Dac valoarea lui N este omis, implicit se va lua 100. 4.2. Generarea vectorilor cu pas logaritmic Pentru a genera un vector cu pas logaritmic, se va utiliza sintaxa: x = logspace(amin, amax, N) Vectorul x conine N elemente distribuite logaritmic ntre decadele 10amin i 10amax. Dac numrul de elemente N este omis, atunci se genereaz un vector cu 50 de elemente distribuite logaritmic ntre decadele 10amin i 10amax. Dac amax= , elementele vectorului sunt distribuite ntre 10amin i .

5. Matrici speciale Anumite matrici des utilizate sunt disponibile n MATLAB ca funcii utilitare: >>eye(n), unde n este un numr natural, returneaz o matrice identitate de dimensiune nxn. Dac n este un numr ntreg negativ, va fi returnat o matrice nul. Dac sintaxa este de forma eye(A) , unde A este o matrice, atunci va fi returnat o matrice identitate de dimensiune egala cu dimensiunea matricei A. Dac avem sintaxa eye(m,n), va fi creat o matrice identitate de dimensiunea maxim posibil, iar restul va fi completat cu zerouri pn se ajunge la o matrice dimensiunea m n . >>ones(n), unde n este un numr natural, returneaz o matrice de dimensiune nxn cu toate elementele egale cu 1. Dac n este un numr ntreg negativ, va fi returnat o matrice nul. Dac sintaxa este de forma ones(A) , unde A este o matrice, atunci va fi returnat o matrice cu toate elementele egale cu 1, de dimensiune egala cu elementele egale cu 1. >>zeros(n) , unde n va fi un numr natural, returneaz o matrice de dimensiune nxn cu toate elementele egale cu zero. Restul observaiilor de la matricea anterioar sunt valabile i aici, cu diferena 8 dimensiunea matricei A. Dac avem sintaxa ones(m,n), va fi creat o matrice dimensiunea m n , avnd toate

c de fiecare dat matricea generat va avea toate elementele egale cu zero. >>rand(n) , unde n va fi un numr natural, returneaz o matrice de dimensiune nxn avnd ca elemente numere aleatoare uniform distribuite ntre 0 i 1. >>g=[] va genera o matrice g de dimensiune 0, dar care va exista n spaiul de lucru. 6. Calcul numeric cu MATLAB-ul 6.1. Operaii aritmetice Calculele aritmetice asupra tablourilor de date n MATLAB pot fi: operaii dup regulile calculului matriceal operaii cu matrici; operaii dup regulile calcului scalar operaii cu tablouri. Operatorii folosii n calculele aritmetice cu tablouri i matrici sunt prezentai n tabelul 1: Tabelul 1. Operatorii aritmetici MATLAB Operaia Adunare Scalari + 9 Matrici + Tablouri +

Scdere nmulire mprire la stnga mprire la dreapta Ridicare la putere Transpunere 6.1.1

* \ / ^ '

* \ / ^ '

.* .\ ./ .^ .'

Operaii aritmetice cu scalari

Operaiile aritmetice ntre doi scalari sunt prezentate n tabelul 2: Tabelul 2. Forma MATLAB a operaiilor cu scalari Operaia Adunare Scdere nmulire mprire la dreapta mprire la stnga Ridicare la putere variabile specificate. 6.1.2 Ordinea operaiilor aritmetice Ordinea operaiilor n MATLAB (prezentat n tabelul 3), este aceeai cu cea a operaiilor aritmetice standard, cunoscut n matematica elementar. 10 ab a^b Expresiile aritmetice pot fi evaluate i rezultatul memorat n b:a a\b Forma algebric a+b a-b axb a:b Forma MATLAB a+b a-b a*b a/b

Tabelul 3. Ordinea operaiilor aritmetice Ordinea 1 2 3 4 Operaia parantezele ridicarea la putere nmulirea i mprirea adunarea i scderea

6.1.3 Operaiile aritmetice cu tablouri Operaiile cu tablouri sunt operaii aritmetice (nmulire, mprire, ridicare la putere, etc.) ntre elementele situate n aceeai poziie a tablourilor, cunoscute sub numele de operaii element cu element. Pentru efectuarea operaiilor cu tablouri se folosesc aceiai operatori ca n operaiile cu scalari, precedai de semnul punct ., semn ce indic efectuarea operaiilor n ordinea element cu element. Pentru a putea fi efectuate operaii element cu element, trebuie ca dimensiunile tablourilor cu care se opereaz s fie identice. Dac unul dintre operanzi este un scalar, acesta opereaz cu fiecare element al tabloului. 6.1.3.1 Adunarea i scderea n cazul operaiilor de adunare i scdere, operatorul nu va mai fi precedat de punct. Exemplu: Fie: A = [2 2 5;1 4 7], B = [3 4 1;2 5 3], p = 2. 11

S se calculeze: C = A + B, D = B - A, E = p - A, F = B - p, G = p+A Secvena MATLAB va fi: A = [2 2 5;1 4 7]; B=[3 4 1;2 5 3]; p=2; C = A + B D = B - A E = p - A F = B - p G = p + A Rezultatul returnat va fi: C=5 6 6 3 9 10 D=1 2 -4 1 1 -4 E=0 0 -3 1 -2 -5 F=1 2 -1 0 3 1 G=4 4 7 3 6 9 6.1.3.2 nmulirea tablourilor Pentru a preciza c nmulirea se efectueaz element cu element, ntre componentele a dou matrici de aceleai dimensiuni, se utilizeaz operatorul de nmulire precedat de punct (.*). 12

Instruciunea este de forma: C = A .* B Exemplu: Fie A = [1 3 2], B = [3 4 6] , p = 3. S se calculeze, folosind calculul element cu element, nmulirea matricelor A i B, nmulirea scalarului p cu matricea A i nmulirea matricei B cu scalarul p. Secvena MATLAB va fi: A = [1 3 2] ; B = [3 4 6] ; p = 3; C = A.*B D = p .*A E = B .* p Rezultatul returnat va fi: C = [3 12 12] D = [3 9 6] E = [9 12 18] 6.1.3.3 mprirea la dreapta Operaia de mprire la dreapta, element cu element, ntre dou tablouri este simbolizat cu operatorul punctslash (./). Instruciunea este de forma: C = A ./ B i reprezint mprirea la dreapta, element cu element, a tablourilor A i B, cu aceleai dimensiuni, rezultnd elementele:

C (i,j) = A(i,j) / B(i,j)


13

6.1.3.4 mprirea la stnga Operaia de mprire la stnga, element cu element, ntre dou tablouri este simbolizat cu operatorul punctbackslash (.\). Instruciunea este de forma: C = A.\B i reprezint mprirea la stnga, element cu element, a tablourilor A i B, cu aceleai dimensiuni, rezultnd un tablou cu elementele:

C(i,j)=A(i,j)\B(i,j)=B(i,j)/A(i,j)
Prin urmare: C = A .\ B = B ./ A 6.1.3.5 Ridicarea la putere Operaia de ridicare la putere, element cu element, ntr-un tablou este simbolizat cu operatorul punct-^ (.^). Instruciune este de forma: C = A.^B i reprezint ridicarea fiecrui element din tabloul A la puterea indicat de valoarea elementului din aceeai poziie a tabloului B, adic:

C(i,j)=A(i,j)^B(i,j)
Dac A e un scalar, se las un blanc ntre scalar i operatorul de ridicare la putere. 6.1.3.6 Transpunerea tablourilor Operaia de transpunere a unui tablou este simbolizat de operatorul punct-apostrof. 14

Instruciunea este de forma: B=A.' i liniile tabloului A vor deveni coloanele tabloului transpus B. Acest lucru face ca un tablou A , cu dimensiunea m n , s devin un tablou B cu dimensiunea n m . 6.1.4 Operaii aritmetice cu matrici Operaiile uzuale de algebr liniar cu matrici sunt simbolizate cu semnele grafice: *,/,\,^,, i se efectueaz dup regulile cunoscute din calculul matricial. 6.1.4.1 Adunarea i scderea Operaia de adunare a dou matrici este simbolizat cu operatorul plus (+). Instruciunea este de forma: C=A+B i reprezint adunarea matricilor A i B, rezultnd elementele:

C(i,j) = A(i,j) + B(i,j)


Matricile A i B trebuie s aib aceleai dimensiuni, n afara cazului cnd A sau B este un scalar ( care va fi notat cu a sau b). Un scalar poate fi adunat cu orice matrice, rezultnd elementele: C(i,j) = a+ B(i,j) sau

C(i,j) = A(i,j) + b

15

Operaia de scdere a dou matrici este simbolizat cu operatorul minus (-). Instruciunea este de forma: C=A-B i reprezint scderea matricei B din matricea A, rezultnd elementele:

C(i,j) = A(i,j) - B(i,j)


Matricile A i B trebuie s aib aceleai dimensiuni, n afara cazului cnd A sau B este un scalar. Un scalar matrice, rezultnd elementele: poate opera cu orice

C(i,j) = a - B(i,j)
sau

C(i,j) = A(i,j) - b

6.1.4.2 nmulirea matricilor Operaia de nmulire a dou matrici este simbolizat cu operatorul stelu (*). Instruciunea este de forma: C=A*B i reprezint matricea produs a celor dou matrici avnd elementele: C (i , j ) = A(i , k )B (k , j )
k

Produsul matricial este posibil dac numrul coloanelor matricei A este egal cu numrul liniilor matricei B, elementul C(i,j) fiind suma produselor dintre elementele liniei i (din matricea A) cu elementele corespondente din coloana j (a matricei B). 16

Produsul matrice-vector este un caz special al cazului general al produsului matrice-matrice. De asemenea, un scalar poate fi nmulit cu orice matrice, realizndu-se nmulirea cu fiecare element al matricei:

C(i,j) = a*B(i,j)

6.1.4.3 mprirea la dreapta Operaia de mprire la dreapta a dou matrici este simbolizat cu operatorul slash (/). Instruciunea este de forma: C=A/B i reprezint mprirea la dreapta a matricilor A i B i este identic cu A*B-1 (B-1 este inversa matricei B). 6.1.4.4 mprirea la stnga Operaia de mprire la stnga a dou matrici este simbolizat cu operatorul backslash (\). Instruciunea este de forma: C=A\B i reprezint mprirea la stnga a matricelor A i B i este identic cu A-1*B (A-1 este inversa matricei A). 6.1.4.5 Ridicarea la putere Operaia de ridicare la putere a unei matrici este simbolizat cu operatorul (^). 17

Instruciunea este de forma: C = A^b i reprezint ridicarea la puterea b a matricei A. Expresia A^b are sens doar pentru A matrice ptrat i b scalar. Dac b este un numr ntreg pozitiv , ridicarea la puterea b este obinut prin nmulirea repetat (de b ori) a matricei A.
C=A^b=A*A*A*A.....*A

, pentru orice b ntreg i

pozitiv. Dac b este un numr ntreg negativ, atunci matricea A va fi mai nti inversat i apoi inversele se nmulesc de b ori:

C=A^b=inv(A)*inv(A) *inv(A)*...*inv(A) , pentru orice


b ntreg i negativ. 6.1.4.6 Transpunerea matricilor Operaia de transpunere a unei matrici este simbolizat cu operatorul apostrof. Instruciunea este de forma: B=A' i astfel liniile matricei A devin coloanele matricei transpuse B. Acest lucru face ca pentru o matrice A cu dimensiunea m n s se obin o matrice B cu dimensiunea n m . Dac elementele matricei A sunt numere reale, operaia de transpunere face ca:

B(i,j)=A(j,i)
Dac elementele matricei A sunt numere complexe, operaia de transpunere returneaz conjugata transpusei, adic: 18

B(i,j)=conj(A(j,i))=real(A(j,i))-i imag(A(j,i))
n continuare vom mai prezenta cteva comenzi utile: >>size(A) returneaz numrul de linii i de coloane ale matricei A >>length(v) returneaz dimensiunea unui vector v. Dac argumentul este o matrice A, length(A) returneaz cea mai mare dimensiune. irurile de text pot fi introduse prin plasarea lor ntre apostrof. Un ir de text poate fi afiat folosind comanda: >>disp(ir text) >>plot(x,y) ploteaz vectorul y versus vectorul x. Vectorii trebuie s aib aceeai lungime. Dac unul din argumentele de intrare este o matrice vectorul se ploteaz versus liniile sau coloanele matricei. n cazul cnd ambele argumente sunt matrici, coloanele lui y se ploteaz versus coloanele lui x. Dac y este un vector complex, atunci plot(y) va plota partea imaginar versus partea real. >>subplot(211) mparte ecranul n dou ferestre i pune plotul curent n prima fereastr. >>subplot(212) mparte ecranul n dou ferestre i pune plotul curent n a doua fereastr. Aceste dou comenzi sunt foarte utile n cazul caracteristicilor Bode. n aceast lucrare s-a ncercat o prezentare a lucrului cu programul Matlab, precum i a unor comenzi utile. Specificm din nou c numrul comenzilor din Matlab este imens! 19

Ne vom opri aici, momentan, reamintindu-v c scopul acestui ndrumar nu este acela de a studia Matlab-ul, ci studiul diverselor aplicaii de teoria sistemelor liniare i simularea acestora utiliznd Matlab-ul. Din acest motiv, n lucrrile urmtoare, se vor prezenta, n funcie de scopul lucrrii, diverse comenzi Matlab necesare simulrii aplicaiilor studiate.

20

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