100% au considerat acest document util (1 vot)
172 vizualizări20 pagini

Invata Matlab

Documentul prezintă introducerea în programarea MATLAB. Se explică ce este MATLAB și cum se lucrează cu matrici, vectori și scalari în acest mediu. De asemenea, se prezintă structura programelor în MATLAB, inclusiv fișierele script și funcție.

Încărcat de

Catalin
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
100% au considerat acest document util (1 vot)
172 vizualizări20 pagini

Invata Matlab

Documentul prezintă introducerea în programarea MATLAB. Se explică ce este MATLAB și cum se lucrează cu matrici, vectori și scalari în acest mediu. De asemenea, se prezintă structura programelor în MATLAB, inclusiv fișierele script și funcție.

Încărcat de

Catalin
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

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. [Link] 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 [Link] 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] [Link] 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

[Link] 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 [Link] 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. [Link] 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. [Link] 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

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

[Link] 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). [Link] 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). [Link] 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. [Link] 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