+ All Categories
Home > Documents > A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · %...

A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · %...

Date post: 08-Feb-2018
Category:
Upload: hakien
View: 263 times
Download: 0 times
Share this document with a friend
28
139 Anexa A Noţiuni MATLAB A.1. Consideraţii generale În cele ce urmează ne propunem să revedem câteva dintre comenzile MATLAB utile în prelucrarea numerică a semnalelor. Programul MATLAB (versiunea sub WINDOWS) s-a consacrat datorită faptului că este simplu de învăţat şi utilizat (enunţurile problemelor şi rezolvările acestora sunt exprimate în modul cel mai natural posibil, aşa cum sunt scrise matematic, fără a fi necesară programarea tradiţională), foarte răspândit în mediile universitare şi poate fi mereu actualizat. El integrează analiza numerică, calculul matriceal, procesarea semnalelor, reprezentările grafice 2D şi 3D, realizarea interfeţelor grafice [3]. MATLAB (MATrix LABoratory) este un program interactiv, destinat prelucrării numerice a datelor furnizate sub formă vectorială sau matriceală. MATLAB-ul include si aplicaţii specifice, strânse în TOOLBOX-uri. Acestea sunt colecţii extinse de funcţii MATLAB (fişiere *.m) care dezvoltă mediul de programare de la o versiune la alta, pentru a rezolva probleme specifice. În cazul procesării semnalelor, toolbox-ul specific este Signal Processing Toolbox – recomandat pentru procesarea semnalelor şi analiza seriilor temporale [7]. Acest toolbox cuprinde două categorii de unelte 1. Funcţii ce se pot utiliza în linia de comandă, pentru: analiza filtrelor analogice şi digitale; implementarea filtrelor digitale; proiectarea filtrelor digitale cu răspuns finit la impuls şi cu răspuns infinit la impuls şi a filtrelor analogice; discretizarea filtrelor; transformări spectrale şi analiza cepstrală; analiza spectrală şi procesarea statistică a semnalelor; modelarea parametrică şi predicţia liniară; generarea a diferite forme de undă; 2. Interfaţă grafică pentru: proiectarea şi analiza filtrelor şi a ferestrelor; analiza şi afişarea grafică a semnalelor; analiza spectrală; filtrarea semnalelor. A.1.1. Prezentarea utilitarului MATLAB Începând cu versiunea 4.0 din 1992, MATLAB rulează sub WINDOWS într-o prezentare nouă, orientată spre ferestre şi meniuri. Această nouă versiune face posiblă vizualizarea mai multor ferestre grafice în acelaşi timp, este adaptată stilului de operare sub sistemul WINDOWS şi menţine compatibilitatea cu programele scrise în versiunile anterioare. Faţă de versiunile DOS, versiunile sub WINDOWS au număr semnificativ de
Transcript
Page 1: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

139

Anexa A Noţiuni MATLAB

A.1. Consideraţii generale În cele ce urmează ne propunem să revedem câteva dintre comenzile MATLAB

utile în prelucrarea numerică a semnalelor. Programul MATLAB (versiunea sub WINDOWS) s-a consacrat datorită faptului că este simplu de învăţat şi utilizat (enunţurile problemelor şi rezolvările acestora sunt exprimate în modul cel mai natural posibil, aşa cum sunt scrise matematic, fără a fi necesară programarea tradiţională), foarte răspândit în mediile universitare şi poate fi mereu actualizat. El integrează analiza numerică, calculul matriceal, procesarea semnalelor, reprezentările grafice 2D şi 3D, realizarea interfeţelor grafice [3].

MATLAB (MATrix LABoratory) este un program interactiv, destinat prelucrării numerice a datelor furnizate sub formă vectorială sau matriceală. MATLAB-ul include si aplicaţii specifice, strânse în TOOLBOX-uri. Acestea sunt colecţii extinse de funcţii MATLAB (fişiere *.m) care dezvoltă mediul de programare de la o versiune la alta, pentru a rezolva probleme specifice.

În cazul procesării semnalelor, toolbox-ul specific este Signal Processing Toolbox – recomandat pentru procesarea semnalelor şi analiza seriilor temporale [7]. Acest toolbox cuprinde două categorii de unelte

1. Funcţii ce se pot utiliza în linia de comandă, pentru: • analiza filtrelor analogice şi digitale; • implementarea filtrelor digitale; • proiectarea filtrelor digitale cu răspuns finit la impuls şi cu răspuns infinit la

impuls şi a filtrelor analogice; • discretizarea filtrelor; • transformări spectrale şi analiza cepstrală; • analiza spectrală şi procesarea statistică a semnalelor; • modelarea parametrică şi predicţia liniară; • generarea a diferite forme de undă;

2. Interfaţă grafică pentru: • proiectarea şi analiza filtrelor şi a ferestrelor; • analiza şi afişarea grafică a semnalelor; • analiza spectrală; • filtrarea semnalelor.

A.1.1. Prezentarea utilitarului MATLAB Începând cu versiunea 4.0 din 1992, MATLAB rulează sub WINDOWS într-o

prezentare nouă, orientată spre ferestre şi meniuri. Această nouă versiune face posiblă vizualizarea mai multor ferestre grafice în acelaşi timp, este adaptată stilului de operare sub sistemul WINDOWS şi menţine compatibilitatea cu programele scrise în versiunile anterioare. Faţă de versiunile DOS, versiunile sub WINDOWS au număr semnificativ de

Page 2: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

140

funcţii noi atât pentru calcul, dar mai ales pentru reprezentările grafice [11]. Partea de documentare, inclusă în structura Help a produsului este aliniată sistemului WINDOWS. Există posibilităţi de căutare a explicaţiilor atât prin index, cât şi prin cuprins (grup de funcţii – Table of Contents).

Programul MATLAB se lansează în execuţie din mediul WINDOWS astfel: Start→All Programs→MATLAB 7.01→MATLAB 7.01 (figura A.1). Pe monitor va apărea fereastra de comenzi, ca în figura A.2.

Figura A.1. Pornirea programului MATLAB

Selecţia unei comenzi, din bara de comenzi sau din meniul principal, se poate face

cu mouse-ul sau cu ajutorul săgeţilor, prin deplasarea zonelor active sau prin tastarea literei marcate în fiecare subcomandă.

După lansarea în execuţie, programul MATLAB intră în modul de comandă, afişând prompterul ‘>>’, şi aşteaptă introducerea unei comenzi de către utilizator. De exemplu, comanda: >> var = 0:5 va crea variabila var afişând cele 6 elemente ale vectorului linie var, de la v(1)=0 la v(6)=5: var =

0 1 2 3 4 5

Page 3: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

141

Figura A.2. Fereastra de comandă MATLAB

Comenzile introduse anterior pot fi readuse în linia de comandă prin folosirea

săgeţilor de la tastatură, ‘↑’ şi ‘↓’ (căutarea se face ca într-o ‘listă’). În afara modului de lucru în linia de comandă, MATLAB-ul lucrează cu programe

conţinute în fişiere. Fişierele ce conţin instrucţiuni MATLAB se numesc fişiere M (*.m). Un program MATLAB poate fi scris sub forma fişierelor script sau a fişierelor function. Un fişier script este un fişier extern care conţine o secvenţă de comenzi MATLAB. După execuţia completă a unui fişier script, variabilele create de acest tip de fişier rămân în zona de memorie a aplicaţiei. Dacă prima linie a fişierului conţine cuvântul ‘function’, fişierul respectiv este fişier funcţie, care se caracterizează prin faptul că poate lucra cu argumente. La terminarea execuţiei unei funcţii, în memoria calculatorului nu rămân decât variabilele de ieşire ale acesteia.

• Meniul principal Pentru a deschide un fişier în Editorul/Debugger-ul MATLAB-ului din meniul de

comandă se procedează astfel: 1. Pentru un fişier nou, se selectează File→New→M-file (figura A.3); 2. Pentru un fişier existent se selectează File→Open şi apoi se selectează fişierul

dorit (figura A.4).

Page 4: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

142

Figura A.3. Crearea unui fişier nou

Figura A.4. Deschiderea unui fişier *.m existent

Page 5: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

143

Din meniul principal se pot seta anumite proprietăţi, legate de formatul dorit la afişare, fonturi si opţiuni de copiere. Pentru aceasta se selectează File→Preferences.

MATLAB-ul lucrează cu două tipuri de ferestre: o fereastră de comenzi şi una de reprezentări grafice. La un moment dat poate fi deschisă numai o fereastră de comenzi. Fereastra grafică este utilizată în reprezentarea grafică a datelor; pot fi deschise mai multe ferestre grafice în acelaşi timp. Selectarea ferestrei grafice se face în modul următor: File→New→Figure. Pe monitor va apare o fereastră grafică ca în figura A.5.

Figura A.5. Deschiderea unei noi ferestre grafice

A.1.2. Funcţii de control în MATLAB Mediul de programare MATLAB este sensibil la tipul de litere (mari sau mici), dar

există comenzi care fac trecerea între modurile sensibil şi nesensibil. Numele funcţie este obligatoriu să fie scris cu litere mici.

Liniile de comentariu dintrun fişier script/funcţie sunt precedate de caracterul ‘%’. • help – furnizează informaţii despre MATLAB şi funcţiile acestuia;

Sintaxă: help nume % furnizează informaţii despre nume1. >> help fft % furnizează informaţii despre transformata Fourier discretă.

• what – listează fişierele *.m, *.mat, *.mex din directorul curent; • lookfor – listează toate numele de fişiere care au în prima linie a help-ului

cuvintele menţionate ca argument, precum şi prima linie din help; 1 Poate fi un nume de funcţie sau un nume de director

Page 6: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

144

Sintaxă: lookfor cuvant % listează toate numele de fişiere care conţin în prima linie a

% help-ului cuvant, precum şi prima linie din help. >> lookfor ifft % listează toate numele de fişiere care conţin în prima linie a

% help-ului ifft, precum şi prima linie din help.

• path – returnează căile cu care lucrează MATLAB-ul, locul unde sunt căutate fişierele apelate;

>> path MATLABPATH C:\MATLAB701\toolbox\matlab\general C:\MATLAB701\toolbox\matlab\ops C:\MATLAB701\toolbox\matlab\lang C:\MATLAB701\toolbox\matlab\elmat …

• who – listează variabilele curente din memorie; • whos – furnizează informaţii suplimentare referitoare la variabilele din spaţiul de

lucru (nume, dimensiune, tip – real sau complex); • exist – verifică dacă o variabilă există în mediul MATLAB; • format – stabileşte formatul extern de afişare al numerelor pe ecran;

Sintaxă: format optiune % parametrul optiune poate fi:

• short – 5 cifre (formatul implicit); • long – 15 cifre; • short e – 5 cifre + exp (puteri ale lui 10); • long e – 15 cifre + exp (puteri ale lui 10); • etc.

Pentru mai multe informaţii tastaţi help format. >> format short >> x = pi x = 3.1416 >> format long >> x x = 3.14159265358979 Să se verifice şi celelalte tipuri de format folosind aceeaşi valoare x.

Acelaşi lucru se poate face din meniu, selectând File→Preferences→General, iar aici formatul dorit (figura A.6).

• clear – şterge din memorie una sau mai multe variabile.

Sintaxe: >> clear v % şterge din memorie variabila v; >> clear v1 v2 % şterge din memorie variabilele v1 şi v2 (sintaxa este valabilă

% pentru oricâte variabile); >> clear % şterge din memorie toate variabilele definite până în acel

% moment.

Page 7: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

145

Figura A.6. Modificarea numărului de cifre zecimale pentru afişarea variabilelor

• dir – afişează numele tuturor fişierelor din directorul curent sau din orice alt

director precizat ca argument; Sintaxe: >> dir % afişează numele tuturor fişierelor din directorul curent. >> dir L1_Introducere_MATLAB

% afişează numele tuturor fişierelor din directorul % L1_Introducere_MATLAB.

• cd – returnează numele directorului curent sau schimbă directorul de lucru;

Sintaxe: >> cd % returnează numele directorului curent. >> cd D:\Scoala\Laborator_PNS\L1_Introducere_MATLAB

% schimbă directorul de lucru în % D:\Scoala\L1_Introducere_MATLAB.

Un anumit program MATLAB, aflat într-un anumit director, nu poate fi rulat decât

dacă directorul respectiv este directorul de lucru.

A.1.3. Fişiere MATLAB Fişierele MATLAB *.m pot fi privite ca macro-uri ale comenzilor MATLAB

salvate în fişiere cu extensia .m, adică numefisier.m. Un fişier *.m poate fi o funcţie cu variabile de intrare şi ieşire sau o listă de comenzi.

Page 8: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

146

MATLAB-ul cere ca fişierele *.m să fie salvate fie în directorul de lucru, fie într-un director care este specificat în lista căilor din MATLAB. Pentru a putea accesa fişierul *.m dintr-un anumit director, trebuie să adăugam directorul/fişierul la calea MATLAB. Acest lucru se realizează astfel: se apasă butonul Browse for folder, se caută directorul dorit, iar apoi se confirmă cu OK, ca în figura A.7.

Figura A.7. Adăugarea directorului/fişierului dorit la calea MATLAB Comanda addpath nume_director adaugă directorul nume_director la calea

curentă din MATLAB. Această comandă este echivalentă cu procedura prezentată anterior de adăugare a unei noi căi. De exemplu: >> addpath D:\Scoala\L1_Introducere_MATLAB % are ca efect adăugarea noii căi, adică se vor putea apela

% fişierele *.m din directorul ce are calea % D:\Scoala\L1_Introducere_MATLAB.

Fişierele MATLAB pot utiliza variabile definite de utilizator, variabile definite cu

comanda input. Să presupunem că dorim să rulăm un fişier MATLAB pentru diferite valori ale unei variabile N. Atunci, în fişierul MATLAB, se utilizează următoarea comandă: N = input(‘N=’)

A.1.4. Definirea variabilelor Variabilelor li se atribuie valori numerice, tipărindu-se direct expresia numerică.

Dacă se tastează în linia de comandă: >> var1 = 1+2 vom obţine rezultatul:

Page 9: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

147

var1 = 3

Rezultatul nu se afişează dacă se pune punct şi virgulă la sfârşitul expresiei, de exemplu: >> var1=1+2;

Unei variabile i se poate atribui o formulă ce utilizează operatorii aritmetic definiţi

în MATLAB (vezi tabel A.1), şi una sau mai multe mărimi definite anterior chiar în cadrul comenzii curente. De exemplu, presupunând că var1 este definită anterior: >> var2 = var1^4 va returna valoarea: var2=

81

În MATLAB se utilizează următorii operatori aritmetici [12]:

Simbol Semnificaţie + Adunare - Scădere * Înmulţire .* Înmulţire între două matrici (sau vectori) element cu element / Împărţire ./ Împărţire între două matrici (sau vectori) element cu element ^ Ridicare la putere .^ Ridicare la putere a unei matrici (sau vector) element cu element ' Transpunere şi conjugare .' Transpunere ( ) Specificarea ordinii de evaluare a operaţiilor

Tabel A.1. Operatori aritmetici în MATLAB

În MATLAB există variabile predefinite – acestea nu pot fi declarate şi sunt accesibile global în orice fişier *.m. Aceste variabile speciale sunt introduse în mod obişnuit în construcţiile funcţiilor MATLAB, ele returnând valorile scalare utile [11]. Câteva dintre variabilele şi constantele speciale sunt:

• ans – variabilă creată automat în care este returnat rezultatul unui calcul, atunci când expresia nu a avut asignat un nume;

Dacă se tastează direct în fereastra de comandă: >> 3 obţinem ans = % nu s-a alocat nici un nume. 3 >> x = 2 x = % s-a alocat numele x. 2

• eps – variabilă permanentă în care este memorată eroarea relativă pentru calculele efectuate în virgulă mobilă. Valoarea implicită este 2.2204e-016, dar poate fi redefinită la orice altă valoare;

• pi – variabilă permanentă care are asignată valoarea 3.141592653589π = … ;

Page 10: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

148

• i 1= − - variabilă utilizată pentru introducerea numerelor complexe; >> y = 2*(1+4*i) y = 2.0000e+000 +8.0000e+000i

• j 1= − - alternativă pentru i; • inf – variabilă utilizată pentru reprezentarea lui +∞ în aritmetica IEEE, rezultat

al împărţirii 1.0 0.0 ; • NaN – variabilă folosită pentru reprezentarea lui Not-a-Number, în aritmetica

IEEE, rezultat al împărţirii nedefinite 0.0 0.0 . Utilizatorul poate defini şi alte variabile, cu ajutorul unor funcţii predefinite.

Se pot verifica următoarele exemple (tastând direct în fereastra de comenzi):

p = pi; % nu se va afişa valoarea p (dar există în memorie). q = pi/2 % va afişa valoarea q. % r = pi/4 % nu se ia în considerare această linie. v = r/2 % va rezulta o eroare deoarece nu îl cunoaşte pe r. s = 1+2+3+... enter % instrucţiunea se continuă şi pe linia următoare. 4+5+6

1. Operaţii asupra numerelor complexe • abs – valoarea absolută (modulul); • angle – faza; • conj – valoarea complex conjugată; • real – partea reală a unui număr complex; • imag – partea imaginară a unui număr complex.

2. Funcţiile radical, exponenţială şi logaritm • sqrt – radical de ordinul 2 (rădăcina pătrată); • exp – exponeţiala (puteri ale numărului e ); • log – logaritm natural (logaritm în baza e ); • log2 – logaritm în bază 2; • log10 – logaritm zecimal (logaritm în baza 10); • pow2 – puteri ale lui 2.

3. Funcţiile trigonometrice directe şi inverse • sin – sinus; • cos – cosinus; • cot – cotangenta; • sec – secanta; • csc – cosecanta. • asin – arcsinus; • acos – arccosinus; • atan – arctangenta;

Page 11: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

149

• atan2 – arctangenta pentru argument complex; • acot – arccotangenta; • asec – arcsecanta; • acsc – arccosecanta.

4. Funcţiile hiperbolice directe şi inverse • sinh – sinus hiperbolic; • cosh – cosinus hiperbolic; • tanh – tangetă hiperbolică; • coth – cotangentă hiperbolică; • sech – secantă hiperbolică; • csch – cosecantă hiperbolică. • asinh – arcsinus hiperbolic; • acosh – arccosinus hiperbolic; • atanh – arctangentă hiperbolică; • acoth – arcotangentă hiperbolică; • asech – arcsecantă hiperbolică; • acsch – arccosecantă hiperbolică.

Pentru informaţii despre modul de utilizare al acestor funcţii folosiţi comanda help însoţită de numele funcţiei dorite.

5. Funcţii destinate analizei de date Dacă v este un vector şi M este o matrice, atunci avem următoarele sintaxe:

sum(v); % calculează suma elementelor vectorului v; prod(v); % calculează produsul elementelor vectorului v; sum(M); % returnează un vector linie având ca elemente suma elementelor

% fiecărei coloane din matricea M;

prod(M); % returnează un vector linie având ca elemente produsul % elementelor fiecărei coloane din matricea M.

max(v); % returnează elementul maxim al vectorului v; [m, p] = max(v); % returnează elementul maxim al vectorului m şi indicele

% elementului maxim p; % dacă există maxime multiple se returnează indicele primului % dintre ele;

min(v); % returnează elementul minim al vectorului v; [m, p] = min(v); % returnează elementul minim al vectorului m şi indicele

% elementului minim p; % dacă există minime multiple se returnează indicele primului % dintre ele;

max(M); % returnează un vector linie având ca elemente maximul % elementelor din fiecare coloană a matricii M;

Page 12: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

150

[m, p] = max(M); % returnează un vector linie m având ca elemente maximul % elementelor din fiecare coloană a matricii M şi un vector linie % p ce conţine poziţia maximului respectiv în cadrul fiecărei % coloane.

min(M); % returnează un vector linie având ca elemente minimul % elementelor din fiecare coloană a matricii M;

[m, p] = min(M); % returnează un vector linie m având ca elemente minimul % elementelor din fiecare coloană a matricii M şi un vector linie % p ce conţine poziţia minimului respectiv în cadrul fiecărei % coloane.

mean(v); % calculează media aritmetică a elementelor vectorului v. mean(M); % returnează un vector linie având ca elemente media aritmetică

% a elementelor fiecărei coloane din matricea M.

A.1.5. Scalari, vectori şi matrici MATLAB este un pachet de programe care lucrează numai cu un singur tip de

obiecte, matrici numerice rectangulare, cu elemente reale sau complexe. În acest sens, scalarii sunt asimilaţi matricilor cu o linie şi o coloană (1 1× ), iar vectorii sunt asimilaţi matricilor cu o linie (1 n× ) sau o coloană ( 1n× ).

Introducerea matricilor în mediul de lucru se face prin una din metodele: • introducerea explicită a listei de elemente; • generarea prin instrucţiuni şi funcţii; • crearea de fişiere *.m; • încărcarea din fişiere de date externe.

Cea mai simplă metodă constă în utilizarea unei liste explicite. Trebuie respectate

următoarele reguli: • elementele unei linii trebuie separate prin spaţii libere sau virgulă; • liniile se separă prin semnul punct-virgulă ‘;’; • elementele matricei sunt cuprinse între paranteze drepte ‘[ ]’.

Elementele matricilor pot fi numere reale sau complexe sau orice altă variabilă

MATLAB. Elementele matricii A pot fi identificate, în MATLAB, prin notaţia A(i, j) şi semnifică elementul de la intersecţia liniei i cu coloana j. Pentru a face referire la un element al matricii sunt necesari doi indici, iar referirea la un element al unui vector se face cu un singur indice.

Fie matricea 1 2 34 5 6

A⎛ ⎞

= ⎜ ⎟⎝ ⎠

şi vectorii ( )7 8 9B = , 12

C−⎛ ⎞

= ⎜ ⎟−⎝ ⎠.

>> A = [1, 2, 3; 4, 5, 6] A = 1 2 3 4 5 6 >> A = [1 2 3; 4 5 6]

Page 13: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

151

A = 1 2 3 4 5 6 >> A = [1 2 3 enter 4 5 6] A = 1 2 3 4 5 6 >> B = [7 8 9] B = 7 8 9 >> C = [-1; -2] C = -1 -2 Sintaxe:

Pentru o matrice M: M(i, j ); % reprezintă elementul din matricea M corespunzător liniei i şi

% coloanei j; M(i); % reprezintă elementul i din matrice, numărarea elementelor

% făcându-se pe coloane.

Pentru un vector v: v(i); % reprezintă elementul de pe poziţia i din vector.

Pentru A, B şi C definite anterior verificaţi: >> A(1, 3) ans = 3 >> A(2) ans = 4

Dacă dorim să schimbăm elementele unei matrici sau să adăugăm alte elemente, fără a rescrie întreaga matrice, se procedează astfel: >> A(1, 3) = 0 A = 1 2 0 4 5 6 >> A(3, 3) = -2 A = 1 2 0 4 5 6 0 0 -2 >> C(3) = 1 C = -1 -2 1

Page 14: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

152

Se pot construi matrici de dimensiuni mai mari pornind de la matrici de dimensiuni mai reduse. Pentru exemplificare, vom folosi matricea A şi vectorii B şi C în ultima lor formă (A – 3 3× , B – 1 3× , C – 3 1× ): >> D = [A; B] D = 1 2 0 4 5 6 0 0 -2 7 8 9 % s-a construit matricea D de dimensiune 4 3× , prin adăugarea

% vectorului B la matricea A (ca ultimă linie); % A şi B au acelaşi număr de coloane (3) pentru a fi posibilă % construcţia.

>> E = [A, C] E = 1 2 0 -1 4 5 6 -2 0 0 -2 1

% s-a construit matricea E de dimensiune 3 4× , prin adăugarea % vectorului C la matricea A (ca ultimă coloană); % A şi C au acelaşi număr de linii (3) pentru a fi posibilă % construcţia.

Dacă v este un vector şi M este o matrice, atunci avem următoarele sintaxe:

v(i:k); % selectează elementele de pe poziţiile i, i+1, i+2, ..., k ale % vectorului v; % dacă i>k, atunci vectorul rezultat este gol (nu are nici un % element);

v(i:j:k); % selectează elementele de pe poziţiile i, i+j, i+2j, ..., k ale % vectorului v (selectează cu pasul j); % dacă j>0 şi i>k sau j>0 şi i<k, atunci vectorul rezultat este % gol;

v([i, j, k]); % selectează elementele de pe poziţiile i, j, k; v(:); % dacă vectorul este linie atunci el devine coloană;

% dacă vectorul este coloană atunci el rămâne nemodificat.

M(:, j); % selectează coloana j a matricii M; M(i, :); % selectează linia i a matricii M; M(:, i:j); % selectează coloanele de la i la j ale matricii M; M(i:j, :); % selectează liniile de la i la j ale matricii M; M(:, i:j:k); % selectează coloanele i, i+j, i+2j, ..., k ale matricii M

% (selectează cu pasul j); M(i:j:k, :); % selectează liniile i, i+j, i+2j, ..., k ale matricii M; M(i:j, k:l); % extrage submatricea formată cu elementele aflate la intersecţia

% liniilor de la i la j şi coloanelor de la k la l ale matricii M; M(:, [i, j, k]); % selectează coloanele i, j, k ale matricii M; M([i, j, k], :); % selectează liniile i, j, k ale matricii M; M([i, j, k], [l, m, n]);

% extrage submatricea formată cu elementele aflate la intersecţia

Page 15: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

153

% liniilor i, j, k şi coloanelor l, m, n ale matricii M; M(:, :); % selectează întreaga matrice M; M(i:j); % selectează elementele de i la j ale matricii M şi le pune sub

% forma unui vector linie (elementele într-o matrice se numără % pe coloane);

M(:); % selectează toate elementele matricii M şi le pune sub forma % unui vector coloană (pune coloanele matricii M una sub alta, % sub forma unui vector coloană).

Verificaţi sintaxele de mai sus folosind matricea A şi vectorii B şi C din exemplele anterioare sau construind alte matrici şi vectori.

A.1.6. Vectori şi matrici uzuale

1. Generarea vectorilor cu pas liniar Sintaxe: v = initial:pas:final;

% se generează un vector linie v cu elementele începând de la % initial la final, cu pasul egal cu pas (pasul poate fi şi % negativ dar atunci valoarea iniţială trebuie să fie mai mare % decât valoarea finală);

v = initial:final; % se generează un vector linie v cu elementele începând de la % initial la final, cu pasul egal cu 1;

v = linspace(minim, maxim, numar_de_elemente); % se generează un vector linie v cu elementele începând de la % minim la maxim, cu pas constant şi având un număr de % elemente egal cu numar_de_elemente.

Verificaţi componenţa vectorilor:

>> v = 1:10:40 v = 1 11 21 31 >> u = 2:8 u = 2 3 4 5 6 7 8 >> d = 20:-2:2 d = 20 18 16 14 12 10 8 6 4 2 >> l = linspace(4, 16, 4) l = 4 8 12 16 >> q = linspace(pi, -pi, 3)

2. Generarea vectorilor cu pas logaritmic Sintaxe: v = logspace(minim, maxim);

% se generează un vector linie v având 50 de elemente distribuite % logaritmic între 10minim şi 10maxim ;

Page 16: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

154

v = logspace(minim, maxim, numar_de_elemente); % se generează un vector linie v având numar_de_elemente % elemente distribuite logaritmic între 10minim şi 10maxim.

Dacă maxim π= , atunci elementele vor fi distribuite logaritmic între 10minim şi π .

Aflaţi valorile vectorilor: g = logspace(1, 3) r = logspace(1, pi) h = logspace(1, 2, 6) k = logspace(0, pi, 3)

3. Matricea goală Sintaxă: x = [] % generează o matrice goală (fără nici un element). >> x = [] x = []

4. Matricea unitate Sintaxe: ones(n); % returnează o matrice de dimensiune nxn cu toate elementele

% egale cu 1; ones(m, n); % returnează o matrice de dimensiune mxn cu toate elementele

% egale cu 1.

ones(size(M)); % returnează o matrice de dimensiunea matricii M cu toate % elementele egale cu 1.

Verificaţi conţinutul următoarele matrici:

>> ones(2) ans = 1 1 1 1 ones(1, 4) ones(3, 2) ones(size(D)) % unde D este matricea definită anterior.

5. Matricea zero Sintaxe: zeros(n); % returnează o matrice de dimensiune nxn cu toate elementele

% egale cu 0; zeros(m, n); % returnează o matrice de dimensiune mxn cu toate elementele

% egale cu 0.

zeros(size(M)); % returnează o matrice de dimensiunea matricii M cu toate % elementele egale cu 0.

Verificaţi dacă următoarele matrici au toate elementele nule:

zeros(4)

Page 17: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

155

zeros(1, 3) >> zeros(5, 2) ans = 0 0 0 0 0 0 0 0 0 0 zeros(3, 1) zeros(size(D)) % unde D este matricea definită anterior.

6. Matricea identitate Sintaxe: eye(n); % returnează o matrice identitate de dimensiune nxn; eye(m, n); % returnează o matrice de dimensiune mxn având elementele

% primei diagonale egale cu 1 iar restul elementelor egale cu 0.

eye(size(M)); % returnează o matrice de dimensiune egală cu dimensiunea % matricii M, având elementele primei diagonale egale cu 1, iar % restul elementelor egale cu 0.

Verificaţi dacă următoarele matrici sunt unitare:

>> eye(2) ans = 1 0 0 1 eye(3, 2) eye(size(D)) % unde D este matricea definită anterior.

7. Matricea cu elemente numere aleatoare, având distribuţie uniformă Sintaxe: rand(n); % returnează o matrice de dimensiune nxn având drept elemente

% numere aleatoare distribuite uniform între 0 şi 1; rand(m, n); % returnează o matrice de dimensiune mxn având drept elemente

% numere aleatoare distribuite uniform între 0 şi 1.

rand(size(M)); % returnează o matrice de dimensiunea matricii M având drept % elemente numere aleatoare distribuite uniform între 0 şi 1.

Verificaţi componenţa matricilor:

rand(2) >> rand(1, 4) ans = 9.5013e-001 2.3114e-001 6.0684e-001 4.8598e-001 rand(5, 2) rand(3, 1) rand(size(D)) % unde D este matricea definită anterior.

Page 18: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

156

8. Matricea cu elemente numere aleatoare, având distribuţie normală (gaussiană) Sintaxe: randn(n); % returnează o matrice de dimensiune nxn având drept elemente

% numere aleatoare cu distribuţie normală (gaussiană), de medie % nulă şi varianţă unitară;

randn(m, n); % returnează o matrice de dimensiune mxn având drept elemente % numere aleatoare cu distribuţie normală, de medie nulă şi % varianţă unitară.

randn(size(M)); % returnează o matrice de dimensiunea matricii M având drept

% elemente numere aleatoare cu distribuţie normală (gaussiană) % de medie nulă şi varianţă unitară.

Verificaţi componenţa matricilor:

randn(2) randn(1, 4) randn(4, 1) randn(5, 2) >> randn(size(D)) ans = -4.3256e-001 -1.1465e+000 3.2729e-001 -1.6656e+000 1.1909e+000 1.7464e-001 1.253 3e-001 1.1892e+000 -1.8671e-001 2.8768e-001 -3.7633e-002 7.2579e-001

9. Matricea diagonală Dacă v este un vector (linie sau coloană) şi M este o matrice, atunci avem

următoarele sintaxe: diag(v); % returnează o matrice pătrată diagonală, cu elementele

% vectorului v pe diagonala principală; diag(v, k); % returnează o matrice pătrată cu elementele vectorului v pe

% diagonala k deasupra celei principale, dacă k>0, sau sub cea % principală dacă k<0; % restul elementelor sunt 0.

diag(M); % returnează un vector coloană ce conţine elementele de pe

% diagonala principală a matricii M; diag(M, k); % returnează un vector coloană ce conţine elementele din

% matricea M de pe diagonala k deasupra celei principale, dacă % k>0, sau sub cea principală, dacă k<0.

Se va defini un vector linie a şi o matrice A:

>> a = randn(1, 4); >> A = randn(4); Verificaţi structura matricilor: diag(a) diag(a, 1) diag(a, -1) diag(a, -2)

Page 19: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

157

>> diag(A) ans = -2.1707e+000 1.6924e+000 -1.9511e-002 -1.8740e+000 diag(A, -2) diag(diag(A))

A.1.7. Dimensiunea unei matrici. Determinant şi inversă

1. Determinarea dimensiunii variabilelor Dacă v este un vector şi M este o matrice mxn atunci avem următoarele sintaxe:

length(v); % returnează numărul de elemente (lungimea) vectorului v; [l, c] = size(v); % în acest caz una dintre dimensiuni va fi egală cu 1;

% dacă v este un vector linie atunci l=1, iar dacă este coloană % atunci c=1.

length(M); % returnează maximul dintre numărul de linii şi numărul de

% coloane al matricii M (maximul dintre m şi n);

[l, c] = size(M); % returnează numărul de linii l şi numărul de coloane c pentru % matricea M.

Se vor defini un vector linie a, un vector coloană b şi o matrice C:

>> a = randn(1, 5); >> b = randn(5, 1); >> C = randn(3, 4); Care este valoarea următoarelor numere? length(a) length(b) >> length(C) ans = 4 size(a) >> size(b) ans = 5 1 size(C)

2. Determinantul unei matrici Dacă M este o matrice pătratică (numărul de linii = numărul de coloane) atunci

sintaxa este: det(M); % calculează determinantul matricii M.

Se vor defini două matrici: >> M = randn(5); >> N = randn(3, 3); Care este valoarea următorilor determinanţi?

Page 20: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

158

>> det(M) ans = -8.8564e-001 det(N)

3. Inversa unei matrici Dacă M este o matrice pătratică cu determinantul diferit de zero, atunci avem

sintaxa: inv(M); % calculează inversa matricii M. Verificaţi această sintaxă, folosind matricile M şi N definite anterior.

A.1.8. Construirea unei funcţii Dacă prima linie a unui fişier MATLAB (*.m) conţine la început cuvântul

function, atunci fişierul respectiv este declarat ca fişier funcţie. O funcţie diferă de un script prin faptul că poate lucra cu argumente. Variabilele definite şi manipulate în interiorul fişierului funcţie sunt localizate la nivelul acesteia. La terminarea execuţiei unei funcţii, în memoria calculatorului, rămân doar variabilele de ieşire ale acesteia. Aceste fişiere pot fi adăugate ca funcţii noi în structura MATLAB [7]. Forma generală a primei linii a unui fişier funcţie este: function [parametrii_iesire] = nume(parametrii_intrare) cu următoarele semnificaţii:

• function – cuvânt cheie care declară fişierul ca fişier funcţie (obligatoriu); • nume – numele funcţiei; reprezintă numele sub care se salvează fişierul *.m

(extensia .m nu face parte din nume); acest nume nu poate fi identic cu cel al unui fişier *.m deja existent;

• parametrii_iesire – reprezintă parametrii de ieşire ai funcţiei; trebuie separaţi prin virgulă şi cuprinşi între paranteze drepte; dacă funcţia nu are parametri de ieşire, parantezele drepte şi semnul egal nu mai au sens;

• parametrii_intrare – reprezintă parametrii de intrare ai funcţiei; trebuie separaţi prin virgulă şi cuprinşi între paranteze rotunde; dacă funcţia nu are parametri de intrare, parantezele rotunde şi semnul egal nu mai au sens.

O funcţie ce realizează media aritmetică a valorilor din vectorul x, se realizează astfel: function m = medie_aritm(x) % x este un vector % se va defini vectorul x, iar apoi se va apela functia medie_aritm(x) n = length(x); % lungimea vectorului x m = sum(x)/n; % media aritmedica a vaorilor din vectorul x y = ['Media aritmetica a numerelor este:', num2str(m)]; disp(y);

Fişierul astfel scris se salvează sub denumirea medie_aritm.m. Funcţia definită anterior poate fi apelată din linia de comandă MATLAB, dintr-un script sau dintr-o altă funcţie. De exemplu: >> x = [1 2 3 4 5]; >> medie_aritm(x); Media aritmetica a numerelor este: 3

Page 21: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

159

A.1.9. Instrucţiuni de control logic

1. Instrucţiunea condiţională ‘if’, clauza ‘else’, clauza ‘elseif’ Sintaxe: if expresie_logica grup_instructiuni end % dacă expresie_logica este adevărată, se execută

% grup_instructiuni dintre instrucţiunea if şi instrucţiunea % end; % dacă expresie_logica este falsă, se trece la prima % instrucţiune care urmează după end;

if expresie_logica_1 grup_instructiuni_A else

grup_instructiuni_B end % dacă expresie_logica_1 este adevărată, se execută

% grup_instructiuni_A dintre instrucţiunea if şi clauza % else; % dacă expresie_logica_1 este falsă, se execută % grup_instructiuni_B dintre clauza else şi instrucţiunea % end;

Dacă funcţia de calculat are mai multe nivele de instrucţiuni if-else, este dificilă

determinarea expresiei logice adevarate, care selectează grupul de istrucţiuni ce urmează a fi executat. În acest caz se foloseşte clauza elseif [11]. Sintaxă: if expresie_logica_1 grup_instructiuni_A elseif expresie_logica_2

grup_instructiuni_B elseif expresie_logica_3

grup_instructiuni_C end % dacă expresie_logica_1 este adevărată, se execută numai

% grup_instructiuni_A; % dacă expresie_logica_1 este falsă şi % expresie_logica_2 este adevărată, se execută numai % grup_instructiuni_B; % dacă expresie_logica_1 este falsă şi % expresie_logica_2 este de asemenea falsă, iar % expresie_logica_3 este adevărată, se execută doar % grup_instructiuni_C; % dacă mai multe expresii logice sunt adevărate, prima % instrucţiune logică adevărată determină care grup de % instrucţiuni este executat prima dată; % dacă toate expresiile logice sunt false, nu se execută nici un % grup de instrucţiuni din structura if;

Page 22: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

160

2. Instrucţiunea repetitivă ‘for’ Instrucţiunea for permite repetarea unui grup de instrucţiuni (din corpul buclei) de un anumit număr de ori. Sintaxă: for index = expresie grup_instructiuni end % index – numele contorului;

% expresie – o matrice, un vector sau un scalar; % de cele mai multe ori expresie este initial:pas:final, % unde • initial – prima valoare a lui index; • pas – pasul pentru index (dacă este omis se consideră

implicit 1); • final – cea mai mare valoare pe care o poate lua index; % pentru index parcurgând intervalul de la initial la final % cu pasul pas, se execută grup_instructiuni, care poate fi % orice expresie MATLAB, de un număr de ori egal cu

% final initial 1pas

n⎡ ⎤−

= +⎢ ⎥⎣ ⎦

, unde prin [ ] s-a notat valoarea

% întreagă a numărului; La utilizarea buclei for trebuie respectate următoarele reguli [11]:

• indexul buclei for trebuie să fie o variabilă; • dacă expresia este o matrice goală, bucla nu se execută. Se va trece la următoare

instrucţiune după instrucţiunea end; • dacă expresia este un scalar, bucla se execută o singură dată, cu indexul dat de

valoarea scalarului; • dacă expresia este un vector linie, bucla se execută de un număr de ori egal cu

numărul elementelor din vector, de fiecare dată indexul având valoarea egală cu următorul element din vector;

• dacă expresia este o matrice, indexul va avea la fiecare iteraţie valorile conţinute în următoarea coloană a matricii;

• la terminarea ciclurilor for, indexul are ultima valoare utilizată.

3. Instrucţiunea repetitivă ‘while’ Instrucţiunea while este o structură care se foloseşte pentru repetarea unui set de instrucţiuni, atât timp cât o condiţie specificată este adevărată. Sintaxă: while expresie grup_instructiuni end % dacă expresie este adevărată se execută

% grup_instructiuni.

4. Instrucţiunea ‘break’ Instrucţiunea break se utilizează pentru a ieşi dintr-o buclă înainte ca aceasta să

Page 23: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

161

se fi terminat. Se recomandă utilizarea acesteia la detectarea unei condiţii de eroare în interiorul buclei. Instrucţiunea break încetează execuţia ciclurilor for şi while. În cazul unor cicluri imbricate, break comandă ieşirea din ciclul cel mai interior. Sintaxă: break

5. Operatori relaţionali şi operatori logici În cadrul unui algoritm, de multe ori este necesară o selecţie a grupului de

instrucţiuni ce urmează a fi executate, condiţionată de valoarea de adevăr a unei expresii. Instrucţiunile condiţionale folosesc operatori relaţionali şi operatori logici.

În MATLAB există şase operatori relaţionali utilizaţi pentru a compara două matrici de dimensiuni egale (vezi tabelul A.2).

Operatori relaţionali Semnificaţie < mai mic <= mai mic sau egal > mai mare >= mai mare sau egal = = identic ~= diferit

Tabel A.2. Operatori relaţionali în MATLAB Operatorii relaţionali compară două matrici sau două expresii matriceale, element

cu element. Aceştia returnează o matrice cu dimensiunea egală cu acea a matricilor care se compară, cu elementele

• 1 – dacă relaţia este ADEVĂRATĂ; • 0 – dacă relaţia este FALSĂ.

Pentru combinarea a două sau mai multor expresii logice se folosesc operatorii

logici din tabelul A.3.

Operatori logici Semnificaţie Prioritate ~ NU 1 & ŞI 2 | SAU 3

Tabel A.3. Operatori logici în MATLAB

A.1.10. Reprezentări grafice

1. Reprezentări grafice în coordonate liniare Sintaxe:

Dacă v este un vector şi M este o matrice: plot(v); % dacă v este un vector cu elemente reale, se vor reprezenta

% grafic elementele sale în funcţie de indici (primul indice este 1, % ultimul indice este egal cu lungimea vectorului); % dacă v este un vector cu elemente complexe, atunci

Page 24: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

162

% reprezentarea sa se va face în funcţie de partea reală (pe % abscisă) şi de partea imaginară (pe ordonată) a elementelor % sale.

plot(M); % se vor reprezenta pe acelaşi grafic coloanele matricii M (fiecare

% din coloanele matricii este privită ca un vector şi reprezentat % ca în sintaxa precedentă).

Dacă x şi y sunt doi vectori de aceeaşi lungime şi N este o matrice de aceeaşi

dimensiune cu matricea M: plot(x, y); % se vor reprezenta grafic elementele vectorului y în funcţie de

% elementele vectorului x; % dacă lungimea vectorului x nu este egală cu lungimea % vectorului y reprezentarea nu este posibilă.

plot(x, M); % dacă lungimea vectorului x este egală cu numărul de linii al

% matricii M, atunci se vor reprezenta pe acelaşi grafic coloanele % matricii M în funcţie de elementele vectorului x; % dacă lungimea vectorului x este egal cu numărul de coloane al % matricii M atunci se vor reprezenta pe acelaşi grafic liniile % matricii M în funcţie de elementele vectorului x; % dacă lungimea vectorului x nu este egală cu una dintre % dimensiunile matricii M, atunci reprezentarea nu este posibilă.

plot(M, N); % se vor reprezenta pe acelaşi grafic coloanele matricii N în % funcţie de coloanele matricii M (coloana k din matricea N va fi % reprezentată funcţie de coloana k din matricea M, unde % k=1, 2, 3, …, număr coloane); % dacă cele două matrici nu au aceeaşi dimensiune, atunci % reprezentarea nu este posibilă.

Pentru reprezentarea mai multor grafice în aceeaşi fereastră, utilizând o singură comandă, folosim: plot(x1, y1, x2, y2, ..., xn, yn);

% se vor reprezenta pe acelaşi grafic y1 în funcţie de x1, y2 în % funcţie de x2, …, yn în funcţie de xn (pot fi vectori sau % matrici); % rămân valabile considerentele făcute în sintaxele anterioare, % referitor la cazurile când avem vectori sau matrici; % dacă xi şi yi (i=1, 2, ..., n), nu au aceeaşi dimensiune, atunci % reprezentarea nu este posibilă.

Se pot folosi diverse linii, markere şi culori pentru reprezentarea graficelor (vezi

tabelul A.4). Observaţie: Funcţia stem realizează o reprezentare în formă discretă a datelor. Vezi help stem.

Page 25: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

163

Tip linie Tip marker Culoare - continuă + plus r roşu - - întreruptă o cerc g verde : punctată * steluţă b albastru

-. linie-punct . punct c cyan

x cruce m magenta ‘cross’ sau s pătrat y galben ‘diamond’ sau d romb k negru ^ triunghi orientat cu vârful în sus w alb v triunghi orientat cu vârful în jos

> triunghi orientat cu vârful spre dreapta

< triunghi orientat cu vârful spre stânga

‘pentagram’ sau p stea cu cinci vârfuri

‘hexagram’ sau h stea cu şase vârfuri Tabel A.4. Linii, markere şi culori pentru reprezentarea grafică în MATLAB

2. Reprezentări grafice în coordinate logaritmice Pentru acest tip de reprezentări se folosesc funcţiile loglog, semilogx şi

semilogy. Sintaxele rămân aceleaşi ca la funcţia plot, singura deosebire fiind modul de scalare al axelor. Astfel funcţia loglog scalează ambele axe (abscisa şi ordonata) folosind logaritmul în baza 10, deci pe axe vom avea puteri ale lui 10. Funcţia semilogx realizează acelaşi tip de scalare însă numai pe abscisă iar funcţia semilogy procedează în acelaşi mod însă numai pe ordonată.

3. Divizarea ferestrei grafice Dacă dorim ca fereastra grafică să conţină mai multe reprezentări grafice se poate

folosi funcţia subplot care împarte fereastra grafică în mai multe ‘subferestre’, în fiecare dintre acestea putând fi plasat câte un grafic. Fereastra grafică este privită astfel sub forma unei matrici cu m linii şi n coloane, deci în total mxn ‘subferestre’ [13]. Numărarea acestor ‘subferestre’ se face pe linii. De exemplu, dacă vrem să împărţim fereastra grafică în 3 3 9× = ‘subferestre’ vom avea următoarea ordine:

1 2 3 4 5 6 7 8 9

Sintaxă: subplot(m, n, p); % împarte fereastra grafică într-o matrice mxn (mxn ‘subferestre’)

% iar p reprezintă numărul fiecărei ‘subferestre’ în matricea % grafică respectivă (numărarea se face pe linii); % sintaxa respectivă este urmată de comanda propriu- zisă de % afişare a graficului, care poate fi oricare din cele prezentate % până acum (stem, plot, loglog, semilogx, semilogy).

Page 26: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

164

4. Schimbarea limitelor axelor Dacă se doreşte vizualizarea numai a unei anumite porţiuni dintr-un grafic,

corespunzătoare unor anumite intervale pe abscisă şi ordonată, se va folosi comanda axis. Sintaxă: axis([x0 x1 y0 y1]);% pe abscisă se va vizualiza între valorile x0 şi x1, iar pe

% ordonată între y0 şi y1; % această sintaxă se plasează după comanda de reprezentare % grafică.

5. Precizarea titlului graficului şi a etichetelor axelor. Trasarea unei reţele pe grafic. Plasarea unui text pe grafic

Sintaxe: title(’text’); % plasează deasupra graficului, ca titlu, textul text; xlabel(’text’); % textul text devine eticheta de pe abscisă; ylabel(’text’); % textul text devine eticheta de pe ordonată. grid; % trasează pe grafic o reţea de linii, uşurând astfel citirea

% graficului; gtext(’text’); % plasează pe grafic textul text (folosind mouse-ul).

Toate aceste sintaxe urmează după comanda de reprezentare grafică.

6. Suprapunerea succesivă a graficelor Dacă dorim să reţinem graficul curent şi să adăugăm în aceeaşi fereastră grafică

următoarele reprezentări grafice se poate folosi funcţia hold. Sintaxe: hold on; % reţine graficul curent şi adaugă în aceeaşi fereastră grafică

% următoarele reprezentări grafice; hold off; % dacă se doreşte în continuare reprezentarea în ferestre grafice

% separate (dezactivează comanda hold on). Dacă se doreşte în cadrul unui program reprezentarea mai multor grafice în

ferestre separate, fiecare comandă grafică va trebui să fie precedată de un nume de forma figure(n), unde n este numărul figurii respective. În caz contrar, la sfârşitul execuţiei programului va apărea numai ultima reprezentare grafică (se va folosi o singură fereastră grafică ce va fi ‘ştearsă’ de fiecare dată la întâlnirea unei noi comenzi grafice).

Să se reprezinte grafic funcţia ( ) ( )sin 2 0.2f t tπ= , cu culoarea albastră şi linie-

plus şi ( ) ( )1g t f t= − cu linie-steluţă de culoare roşie. Să se scrie titlul ‘f(t) = sin(2 \pi 0.2 t) si g(t) = 1 - f(t)’ pe axa x să se scrie ‘timp’, iar pe axa y să se scrie ‘Amplitudine’. Pentru reprezentarea grafică se vor folosi atât funcţia plot (subfereastra 211), cât şi funcţia stem (subfereastra 212). >> t = 0:0.1:5; f = sin(2*pi*0.2*t);

Page 27: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

165

g = 1-f; figure(1); subplot(211); plot(t, f, '-+b', 'LineWidth', 1.5); hold on plot(t, g, '-*r', 'LineWidth', 2); hold off; grid; l1 = legend('f(t)', 'g(t)', 0); title('f(t) = sin(2 \pi 0.2 t) si g(t) = 1 - f(t)'); ylabel('Amplitudine'); subplot(212); stem(t, f, 'ob', 'LineWidth', 1.5); hold on stem(t, g, '^r', 'LineWidth', 2); hold off; grid; l2 = legend('f(t)', 'g(t)', 0); xlabel('timp'); ylabel('Amplitudine');

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1

0

1

2

Am

plitu

dine

f(t) = sin(2 π 0.2 t) si g(t) = 1 - f(t)

f(t)g(t)

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1

0

1

2

timp

Am

plitu

dine

f(t)g(t)

Figura A.8. Graficul funcţiilor ( )f t şi ( )g t

A.2. Exerciţii Exerciţiul A.2.1: Se dau matricile:

3 2 112 4 50 2 0

A⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

, 2 3 41 1 13 2 3

B⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

şi scalarul 3m = . Să se calculeze în MATLAB: C A B= + ;

Page 28: A Prezentare Matlab - digital.ubm.rodigital.ubm.ro/?download=2016_PNS_LAB1.pdf · % D:\Scoala\L1_Introducere_MATLAB. Fişierele MATLAB pot utiliza variabile definite de utilizator,

Anexa A – Noţiuni MATLAB

166

D A B= − ; E C m= + ; F A B= ⋅ ; G B m= ⋅ ;

'H A= ; 'I B= ;

J A B= ; \K A B= ; mL C= ;

Să se verifice dacă 1J A B−= ⋅ şi 1K A B−= ⋅ . Să se utilizeze formatul short. Exerciţiul A.2.2: Să se genereze un vector cu pas liniar, cu limitele: xmin=3, xmax=9, pas=2. Exerciţiul A.2.3: Să se genereze un vector cu pas liniar, cu limitele: xmin=3, xmax=9,

6N = , unde N este numărul de elemente. Exerciţiul A.2.4: Să se genereze un vector cu 9N = elemente distribuite logaritmic între decadele 10-3 si 103. Exerciţiul A.2.5: Fie un vector 3 : 0.9 :123y = . Să se calculeze lungimea vectorului y şi să se genereze un vector cu toate elementele 1 de lungime egală cu lungimea vectorului y . Exerciţiul A.2.6: Să se efectueze produsul scalar al vectorilor: [ ]1 2a = , [ ]3 3b = − . Exerciţiul A.2.7: Să se calculeze produsul element cu element al matricilor:

9 8 76 5 43 2 1

A⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

şi 1 0 11 0 11 0 1

B⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

.

Exerciţiul A.2.8: Să se reprezinte grafic funcţia discretă:

( ) 1sin 2 , 0,105

x n n nπ⎛ ⎞= =⎜ ⎟⎝ ⎠

.

Graficul să fie de culoare roşie, reprezentat cu steluţe (*) (a se face apel la comanda help stem). Să se scrie titlul şi identificările axelor. Exerciţiul A.2.9: Să se creeze o funcţie, denumită bplusa.m function suma = bplusa(a, b) prin care se face suma a două variabile a şi b. Exerciţiul A.2.10: Să se creeze o funcţie, denumită boria.m function produs = boria(a, b) prin care se face produsul a doi vectori a şi b.


Recommended