+ All Categories
Home > Documents > Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere...

Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere...

Date post: 21-Nov-2019
Category:
Upload: others
View: 18 times
Download: 0 times
Share this document with a friend
15
Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor aplicații și probleme, Editura UTPRES, 2008 Introducere în 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 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 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: StartAll ProgramsMATLAB 7.01MATLAB 7.01 (figura A.1). Pe monitor va apărea fereastra de comenzi, ca în figura A.2. Figura A.1. Pornirea programului MATLAB Figura A.2. Fereastra de comandă 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 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
Transcript
Page 1: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

1

Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor – aplicații și probleme, Editura UTPRES, 2008

Introducere în 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 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

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

Figura A.2. Fereastra de comandă 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

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

Page 2: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

2

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).

Figura A.3. Crearea unui fişier nou

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

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 dintr-un fişier script/funcţie sunt precedate de caracterul ‘%’.

help – furnizează informaţii despre MATLAB şi funcţiile acestuia;

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;

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

who – listează variabilele curente din memorie;

Page 3: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

3

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;

Să se verifice toate tipurile de format folosind valoarea x = pi.

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.

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

argument;

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

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

este directorul de lucru.

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

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.

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.

Page 4: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

4

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: 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 ;

i 1 - variabilă utilizată pentru introducerea numerelor complexe;

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.

Page 5: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

5

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;

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;

Page 6: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

6

% 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;

[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 3

4 5 6A

şi vectorii 7 8 9B , 1

2C

.

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

A =

1 2 3

4 5 6

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

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:

Page 7: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

7

>> 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

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 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:

Page 8: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

8

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 ; 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:

Page 9: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

9

zeros(4)

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.

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:

Page 10: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

10

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)

>> 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 decoloane 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? >> 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.

Page 11: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

11

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

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

Page 12: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

12

% 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;

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ă 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Ă.

Page 13: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

13

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 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).

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

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

Page 14: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

14

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

(î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. Dacă vrem să împărţim fereastra grafică în 3 3 9 ‘subferestre’ vom avea: 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 (stem, plot, loglog, semilogx, semilogy).

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);

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);

Page 15: Anexa A Introducere în MATLAB PNS/Lab1_NotiuniIntroductiveMATLAB.pdf · Laboratorul 1: Introducere în MATLAB 1 Anexa A - L. Grama, C. Rusu, Prelucrarea numerică a semnalelor –

Laboratorul 1: Introducere în MATLAB

15

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');

Rulați scriptul fgPlot.m.


Recommended