You are on page 1of 16
Lucrarea 2 — Structuri de date Lucrarea 2 Structuri de date Obiectivul lucrarii Obiectivul acestei lucrari este de a oferi o prezentare a modului de introducere si de manipulare a matricelor, a vectorilor si a scalarilor in Matlab. Astfel, in continuare vom ‘incerca sa abordam urmatoarele aspecte: 1. Nofiuni introductive privind: scalarii, vectorii si matricele 2. Operatii cu scalari, vectori si matrice Aspecte teoretice si mersul lucrarii Tipul de date fundamental, pe care Matlab il foloseste pentru a stoca si a prelucra date, este matricea. Datele in Matlab sunt reprezentate in memoria calculatorului sub forma de matrice. Daca in alte limbaje este necesar sa se declare tipul variabilelor inainte de a fi utiizate, in Matlab acest lucru nu este necesar deoarece in momentul in care Matlab intalneste o variabila noua, o creeazd automat si ji alocé spatiul de memorie necesar. 4. Nofiuni introductive privind: scalarii, vectorii si matricele Un scalar in domeniul matematicii este un numar, insa in Matlab este reprezentat ca © matrice cu 0 linie si o colana (1x1). Scalarii sunt variabile simple pe care le utilizam si le manipulam in ecuattii algebrice simple. Exemplu: 13 Lucrarea 2 — Structuri de date Un vector in Matlab este reprezentat ca o matrice simpla cu o singura linie (1 x n) sau cu o singura coloana (m x 1). Diferenta dintre aceste doua tipuri de reprezentare a vectorilor de tip linie sau de tip coloana este esentiala, deoarece utilizarea necorespunzatoare a tipului de vector cauzeaz multiple erori de programare. Forma generala a unui vector [1]: nume_variabid = [ elemente vector ] % elementele vectorului sunt delimitate de paranteze drepte ([]) Exemplu: >> x = [ 1 2 3] Svector de tip linie >> xs 1 2 3 >> y = [1,2,3] @vector de tip linie > ye 1 2 3 >> 2 = [17273] vector de tip coloana >> 2s Daca aplicm operatorul de transpunere ( ,"") asupra vectorului de tip linie vom obtine un vector de tip coloana. Exemplu: >> x = [ 1 2 3] % vector de tip linie 14 Lucrarea 2 — Structuri de date >> x= [12 3] Operatorul ,:", este un instrument ce permite generarea si manipularea matricelor. Exemplu: >> x=1:6 % se genereaz4 un vector linie cu 6 elemente; distanta dintre elemente fiind de o unitate a Daca se cunose limitele intervalului (amin gi amax) gi pasul (pas) dintre doud elemente, se poate folosi instructiunea de mai jos pentru a genera un vector [2] De asemenea, in Matlab mai exista doud funectii: 1inspace $i a genera vectori ogspace utile pentru Functia Linspace genereazé un vector de tip linie cu o repartizare uniforma elemente. Forma generala a functiei 1 inspace este [2]: tre x = linspace (amin, amax,N) 15 Lucrarea 2 — Structuri de date unde: amin, amax sunt limitele intervalului si N’ reprezinté numarul de elemente. Daca este omis, se genereaza implicit 100 de elemente [1] Exemplu: >> linspace(1,10,5) ans 1.0000 3.2500 5.5000 7.7500 + 10.0000 Functia Logspace genereaza un vector de tip linie cu pas logaritmic. Forma generalé a functiei Logspace este: x = logspace (amin, amax,N) Unde: amin, amax sunt limitele intervalului si 1 reprezint& numarul de elemente distribuite logaritmic intre decadele [10""", 10°"2*]. Daca N este omis, se genereazd implicit 50 de elemente [2] Exemplu: >> logspace (1, 4,4) ans = 10 100 1000 10000 Pentru a selecta elementele unui vector existé mai multe metode. Ele sunt descrise in tabelul 2.1. Tabelul 2.1. Metode de selectie ale elementelor unui vector Comanda Descriere Selecteaza elementele de pe poziille i, /+7, #2, .., kale v(itk) vectorului v; daca >k, atunci vectorul rezultat este gol (nu are nici un element) 16 Lucrarea 2 — Structuri de date Selecteaza elementele de pe pozitile i, i4j, #2), ..., kale v(irjtk) vectorului v (selecteazé cu pasul j); daca />0 si i>k sau j>0 si isk, atunci vectorul rezultat este gol. vila, 3, kl) _|Selecteaza elementele de pe pozifile i,j, k. Daca vectorul este linie atunci el devine coloana; daca vectorul este coloana atunci el ramane nemodificat. vi) Matricea, in Matlab, este un tablou dreptunghiular bidimensional de numere reale sau complexe. in general, in alte limbaje de programare matricele sunt numite tablouri. in Matlab diferenta dintre termenii matrice gi tablou este esentiala, deoarece face diferenta dintre tipul de operatii ce pot fi aplicate si rezultatul acestora Literar o matrice are forma: unde: m sin reprezinta numérul de linii, respectiv numairul de coloane. Forma generala a unei matrice este de forma [1] nume_variabild = [primul rand; al - 2 -lea rand; al - 3 -lea rand; ....; ultimul rand] Toate liniile trebuie sa aiba acelasi numar de elemente. Elementele matricei pot fi numere reale sau complexe, variabile predefinite, expresii matematice care includ numere si functi Exist mai multe moduri de introducere a matricelor in Matlab: - Introducerea explicit a matricei; - Generarea utiizand instructiuni si functi; - Utilizand figiere ,*.m"; - Import/Export de date din fisiere externe de date. 7 Lucrarea 2 — Structuri de date a. Generarea matricelor utilizand lista explicité Exist& doud modalitati simple de definire a unei matrice utilizand lista explicita. O prima metoda consta in utilizarea unei liste explicite. Introducerea une’ liste explicite impune cateva reguli ce trebuie respectate - elementele unei linii sunt separate prin spatii sau virgule; ~ _sfargitul unei linii se marcheaza cu punet si virgul&; - lista cu elementele matricei este cuprinsa intre paranteze drepte [ ]. Exemplu: >> A=[1 2 3; 45 6; 7 8 9] A= 1 2 3 4 5 6 7 8 9 A doua metoda, inlocuieste semnul ,;” cu apsarea tastei Enter (are rolul de a muta cursorul pe linia urmatoare) Exemplu: >> As[ 1 2 3 «se apasé tasta Enter dupa elemetul 3 4 5 6 > A=[1 2345678 9]7 length (A) etunieaza numer de) >> length (A) lelemente ale vectorului A. lans =9 Retumeeza un pea eee size(A) ind (m Xn), undemxn — |. size (A) reprezina dimensiunea mattricii A. lans = 2 5 19 Lucrarea 2 — Structuri de date >> v=[1 2 3] Returneaza o matrice b> diag(v) patratica, cuelementele fans = diag(v) \vectoruluivpediagonala ff 0 0 rincipala. lo 2 0 lo 0 3 a >> A=[1 23 476 7 8 9)3 Returneaz un vector e >> diag (A) jcoloana ce contine diag (a) , lans = lelementele matricei Ade pe |; \diagonala principal. 5 >> 2 Retumeaza omatrice de >” “2*082) zeros(n) —_|dimensiune (nxn) cutoate [5° ~ lelementele egale cu zero. |} , b> zeros (2,3) Retumeazi omatricede 7” = zeros (m,n) |dimensiune (mxn)cutoate 5 5g lelementele egale cuzero. (, = gg = >> A=[1 23 476 7 8 9)3 Returneaz 0 matrice de b> zeros (size(A)) \dimensiunea matricei A cu Ber08 (8120 (A) ee eee tata onak lans = joate elementele egalecu [Sy gg Zero. b 6Ul0lCltt - ‘ >> (2 Retumeaza omatrice de >” 8°82) ones(n) —_|dimensiune (n xn) cu toate [{" ~ lelementele egale cuunu. |, ; b> ones (2,4) Returneazi omatricede 7° ones (m,n) |dimensiune (m xn) cutoate [f° | felementele egale cuunu. =f, ones (size (A)) Returneaza o matrice de ‘dimensiunea matricei A cu toate elementele egale cu 1. 20 >> A=[1 2 372 3 417 >> ones (size(A)) lans = 1 1 1 1 Lucrarea 2 — Structuri de date Returneaza o matrice de \dimensiune (n x n) cu b> eye(2) ‘elementele de pe diagonala_ fans = eye(n) omens iprincipala egale cu unu, iar [1 0 toate celelalte elemente o 1 legale cu zero. Returneaza o matrice de dimensiune (m x n) cu >> eye (2,3) ‘elementele de pe diagonala_ fans = eye (m,n) - iprincipala egale cu unu, iar {1 0 0 toate celelalte elemente o 1 0 legale cu zero. Retuneazaomaticede iy > 3.7 3 4]; \dimensiunea matricei A cu jelementele de pe diagonala >> eye(size(A)) eye(size(a)) [pom ala fans = brincipalé egale cu unu, iar [> 5 5 toate celelalte elemente |, 7 i legale cu zero Returneaza o matrice de >> rand(2) ‘dimensiune (n x n) cu Rese rand(n) plomento aleatoare cu eter o jistributie uniforma in cscs Ta intervalul (0.0, 1.0) Retumneazaomaticede | > 5) dimensiune (m x n) cu Pre rand (m,n) plemante aleatoare cu WCC Cot OaT istnbufie| uniforms tr 0.0975 0.54690. 9649 intervalul (0.0,1.0). Returneazdomatricede >> randn (2,3) vandn (mn) dimensiune (mx n) cu lans = ' elemente aleatoare cu -1-3499 0.7254 0.7147 \distributie normala. 3.0349 -0.0631 -0.2050 b> rand (size (A Retumeaza omatrice de > “ene(size(®)) rand(size(A)) fimensiunea pena WoC oe ote [Plements aleatoare. 0.9157 0.9595 0.0357 21 Lucrarea 2 — Structuri de date Returneaza o matrice de . >> magic(3) lordinul n, unde n>=3, care S lans = magic(ay ate sumaelementelor de pe |; 1 6 ’ fiecare linie, coloana, : : ° \diagonala principala si h fo \diagonala secundara, egala. c. Generarea matricelor utilizand fisiere *m Pentru a genera un fisier ,*m” se utilizeaz un editor text (exemplu: notepad, wordpad). Aceasta metoda este utilé in momentele in care informatille exist intr-o forma digitala. Exportul datelor se realizeaza cu functia save cu optiunea ascii Fisierele ,*.m” sunt inregistrate in format ASCII (TEXT). Formatul ASCII stocheazé infomatile pe linii cu un numar egal de elemente. Elementele sunt delimitate de spatti si incheierea unei linii se termina cu Enter. Importul datelor in Matlab se face cu functia load. d. Import / Export de date din figiere externe de date Microsoft Excel este cel mai utilizat program dedicat calcului tabelar si pentru a stoca date. De asemenea, Matlab dispune de comenzi pentru a importa date catre si din formate xlsx. Importul datelor din figiere Excel se face cu comanda x1sread [1] Forma simpla de import este [1] nume_variabild = xlsread(‘nume_fisier_excel’) In cazul in care figierul Excel are mai multe pagini, datele vor fi importate din prima foaie. Daca dorim sa importam 0 anumita pagina din fisierul Excel atunci mai adéugam un parametru in plus la forma generala: nume_variabild = xlsread(‘nume_figier_excel’, ‘nume_pagina’) Exportul datelor se face prin intermediul comendazii x1swrite [1] 22 Lucrarea 2 — Structuri de date Forma simpla de export este [1]: xlswrite((‘nume_figier_excel’, ‘nume_variabila’) Operatii cu scalari, vectori si matrice Operatille cu matrice trebuie sa respecte urmatoarele regul: Doua matrice se pot aduna sau scaidea daca au acelasi numar de linii si de coloane Exemplu: >> A=[1 2 374 5 6] Ne 2 3 4 5 6 >> Be[S 6 874 2 -2) 6 8 1 8 7 4 >> A-B ans = “400-405 0 3 8 23 Lucrarea 2 — Structuri de date Daca inmultim o matrice cu un scalar inseamna ca toate elementele matricei se inmultesc cu acel scalar. Exemplu: 1 2 3 4 5 é >> 2*A ans 2 4 é 8 10 inmultirea matricelor nu este intotdeauna posibila, decat daca numarul de coloane ale primei matrice este egal cu numarul de linii celei de a doua matrice. Exemplu: 5 6] Ne 1 2 3 4 5 6 >> A*B Soperatie posibil& 24 Lucrarea 2 — Structuri de date 10 3 28 8 >> C=[1 2; 2 6] c= 1 2 2 >> A*C Soperatie imposibils Error using * Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number of rows in the second matrix. To perform elementwise multiplication, use '.*", ‘impaitirea la dreapta a dou matrice, de exemplu A si B, presupune: As] aBA(e *inv(B) impartirea la stanga a doua matrice A si B presupune: A\B=B/A=A‘ (~ *B=inv (A) *B deci dimensiunile inversei lui A trebuie s& corespunda dimensiunilor matricei B in conformitate cu regulile de inmultire a doua matrice; ridicarea la ptrat a unei matrice presupune ca aceasta sa fie patratica (numarul de linii egal cu numarul de coloane) Operatiile cu tablouri presupun: operanzii trebuie s& aiba aceiasi dimensiune, fie c& este vorba de un vector sau 0 matrice, si poarta denumirea de tablouri; 25 Lucrarea 2 — Structuri de date - operatiile aritmetice (inmultire, impaitire, ridicare la putere, etc.) se realizeaza intre elementele situate pe aceeasi pozitie ale tablourilor, cunoscute sub numele de operat element cu element; - _simbolul oricarei operatii matematice daca este insotit de operatorul ,..” (de exemplu .*, ./, ete.) atunci operatiile matematice sunt realizate element cu element intre tablouri; - daca unul dintre operanzi este un scalar, acesta opereaza cu fiecare element al tabloului Operator folositi in calculele aritmetice cu tablouri si matrice sunt prezentati in tabelul de mai jos: Tabelul 2.4. Operatori aritmetici in Matlab Operatie Scalari Matrice Tablouri Adunare + + + Scddere = = = Tnmultire : ¥ = ‘Impartire la stanga \ \ aN Imparfire la dreapta 7 7 Ridicare la putere . . . Transpunere = a R Bibliografie [1] A. Gilat, Matlab An Introduction with Applications. Fifth Edition” , Wiley, 2015. [2] M. Ghinea si V. Fireteanu , Matlab Calcul Numeric. Grafic’. Aplicatii’, Teora, 2003. [3] L. Grama si C. Rusu , Prelucrarea numerica a semnalelor — aplicatii si probleme’, U.T. PRESS, 2008. Cerinte: 1. S& de introduca in Matlab toate instructiunile de prezentate in aceasta lucrare. 2. Definiti in Matlab scalarii, vectorii si matricele de mai jos: 26 Lucrarea 2 — Structuri de date 0 = ( 5 z=] 6 17 3 6 4 1213 14 7) US 16 17, ou 19 21 c=|12 8); p=|22 18 7 10 17 20 Utilizand scalarii, vectorii si matricele de la exercitiul 1 efectuati calculele: a+b; atviatw; at+A; at+C; vtu; w+z; A+B; C+Diw+4; a-b; a-vja-w;a-Aja-C; vu; w-2; AB; D-C; A-a; C-b; a*h; a*v; a*w; a*A; a*C; v¥u; wz; A*B;A*C yv.tusy.tw; vt; vtC; A*B ab ww 24 CO; alb\ aly, alw, al A; al/C\AlB; CID; AIC; AB; AICjas Az alc; wz, wiz; a\byv\u;w\z; e@>eaece vou'yw Utilizand operatorul,:” sa se genereze urmatorii vector 60] 10 12] 6 -9 -12 -15] 19753 1 Fie vectorul v=[0 1 2 4 6 36708 1] a. Sa se determine lungimea vectorului b. Sa se scrie instructiunile care permit selectarea din vectorul v: - a elementelor ce se afla pe pozitiiimpare; - a elementelor ce se afla pe pozitii pare; c. Sa se transforme vectorul vin vector coloana 27 Lucrarea 2 — Structuri de date d. S& se adauge elementul 15 egal cu suma primelor 5 elemente ale vectorului v. 1 -1 1 -1) 7. Cu ajutorul vectorilor: v =| 2| si v| -2|. SA se construiascd matricea: 4=|2 2 3 3 3 -3) 1-7 99 3 47 0 09 -7 57 4 5 78 -78 12 -74 3 8. Se considera matricea: B = Se cere: a. Transformati matricea B intr-un vector coloana b. b. Sa se extraga submatricea D de dimensiune 3x2 , ce consta din elementele situate pe ultimele tre’ lini gi primele doud coloane ale matricei B. -7 99 c. Sase extraga submatricea C = ( 0 wp) din matricea B. 4.5 9. Sa se introduca matricea: 1 4-5 4 65 43 21 123 4 5 6 5 943 2 61 2164 5 Se cere: SA se determine dimensiunea matricei A SA se selecteze elementele ce se afla pe linia a treia. Sa se selecteze elementele ce se afla pe coloana a patra ‘Sa se extraga doua submatrici de dimensiune 3x3, si s8 se concateneze cele doua matrice sub forma unei matrice de dimensiune 3x6, apoi sub forma unei matrice de dimensiune 6x3. a. b. ©. 4. 10.88 se genereze o matrice E de numere aleatoare care are dimensiunea 2x6. 11.Fie vectorul v=[-2 -8 —4 -6 -2]. Sa se genereze o matrice A ce contine pe diagonala principala elementele vectorului v. 28

You might also like