MATLAB este un pachet de programe dedicat calcului numeric și reprezentărilor grafice. Elementul de baz ă cu care opereaz ă este matricea, de aici… [601781]

1. INTRODUCERE ÎN MATLAB

1

LUCRAREA 1
INTRODUCERE ÎN MATLAB

1.1. Introducere

MATLAB este un pachet de programe dedicat calcului numeric și
reprezentărilor grafice. Elementul de baz ă cu care opereaz ă este matricea, de aici
provenind și numele s ău: MATrix LABoratory. Res ursele sale de calcul și
reprezentare grafic ă sunt bogate, permi țând opera ții matematice fundamentale,
analiza datelor, programare, reprezent ări grafice 2D și 3D, realizarea de interfe țe
grafice etc. Din punct de vedere al construc ției sale, MATLAB este alc ătuit
dintr-un nucleu de baz ă în jurul c ăruia sunt grupate TOOLBOX-urile. Acestea
reprezintă niște aplicații specifice, fiind de fapt colec ții extinse de func ții
MATLAB care dezvolt ă mediul de programare de la o versiune la alta, pentru a
rezolva probleme din diverse domenii. În prelucrarea numeric ă a semnalelor cel
mai des utilizat este toolbox-ul SIGNAL PROCESSING.

1.2. Comenzi și funcții principale în MATLAB

MATLAB opereaz ă cu două tipuri de ferestre:
1. fereastra de comenzi;
2. fereastra pentru reprezent ări grafice.
La deschiderea programului MATLAB va ap ărea pe ecranul calculatorului
fereastra de comenzi, având în part ea de sus bara de meniuri aferent ă. Simbolul
“>>” reprezint ă prompterul MATLAB și se află la începutul fiec ărei linii de
comandă din fereastra de comenzi. Ferestrele pentru reprezent ări grafice vor
apărea atunci când se va cere prin comenzi specifice afi șarea unor grafice.

Atenție: 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 ă”).

1. INTRODUCERE ÎN MATLAB

21.2.1. Func ții MATLAB de interes general

• help – furnizeaz ă informații despre MATLAB și funcțiile acestuia.
Sintaxă:
help nume – furnizeaz ă informații despre nume (poate fi un nume de
funcție sau un nume de director).
Exemplu :
help fft – furnizeaz ă informații despre transformata Fourier discret ă.

• who – listează numele variabilelor din spa țiul de lucru.

• whos – furnizeaz ă informații suplimentare referitoare la variabilele din
spațiul de lucru (nume, dimensiune etc.).

• format – stabilește formatul extern de afi șare al numerelor pe ecran.
Sintaxa :
format op țiune – parametrul opțiune 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 .
Exemple :
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.

• clear – șterge din memorie una sa u mai multe variabile.
Sintaxe :
clear v – șterge din memorie variabila v.
clear v1 v2 – șterge din memorie variabilele v1 și v2 (sintaxa e
valabilă pentru oricâte variabile).
clear – șterge din memorie toate variabilele definite pân ă în acel moment.

• 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. INTRODUCERE ÎN MATLAB

3Sintaxă:
lookfor cuvânt – listeaz ă toate numele de fi șiere care con țin în prima
linie a help-ului cuvânt , precum și prima linie din help.
Exemplu :
lookfor ifft – listează toate numele de fi șiere care con țin în prima linie
a help-ului ifft , precum și prima linie din help.

• 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 nume – afișează numele tuturor fi șierelor din directorul nume .

• cd – returneaz ă numele directorului curent sau schimb ă directorul de lucru.
Sintaxe :
cd – returneaz ă numele directorului curent.
cd c:\matlab\nume_director – schimb ă directorul de lucru în
nume_director (presupunând c ă MATLAB este instalat pe c:\).

Atenție: Un anumit program MATLAB aflat într-un anumit director nu poate fi
rulat decât dac ă directorul respectiv este directorul de lucru .

1.2.2. Variabile și constante speciale în MATLAB

• ans – variabil ă creată automat în care este retu rnat rezultatul unui calcul,
atunci când expresia nu a avut asignat un nume.
Exemplu (se va tasta direct în fereastra de comenzi):
3 → ans = // nu s-a alocat nici un nume
3
x=2 → x = // s-a alocat numele x
2
• pi – valoarea π.

• Inf – reprezentarea lui +∞.

• NaN – reprezentarea lui 0/0 sau ∞/∞.

• i sau j – folosite reprezentarea numerelor complexe.

1. INTRODUCERE ÎN MATLAB

4Atenție:
– dacă după o linie de comand ă urmează semnul “ ; ” atunci rezultatul nu va
mai fi afișat (excepție fac comenzile grafice );
– dacă în fața unei linii de comand ă se pune semnul “ % ” atunci se face
abstracție de linia respectiv ă (este interpret ă ca o linie de comentariu );
– dacă se dorește continuarea unei instruc țiuni pe linia urm ătoare se folosesc
“…” urmate de enter;
Verificați următoarele exemple (se va tasta 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

4+5+6 // instrucțiunea se continu ă și pe linia urm ătoare

1.2.3. Matricea – element de baz ă în MATLAB

MATLAB lucreaz ă numai cu un singur tip de obiecte și anume matrice
numerice, având elemente reale sau co mplexe. Astfel scalarii sunt privi ți ca
matrice de dimensiune 1 x 1, iar vect orii ca matrice de dimensiune 1 x n (dac ă
este vector linie) sau n x 1 (dac ă este vector coloan ă).
Reguli privind modul de definire a matricelor:
– elementele matricei sunt cuprin se între paranteze drepte [ ]
– elementele unei linii se separ ă prin pauz ă (blanc) sau virgul ă
– liniile matricei se separ ă prin ; sau enter .

Exemplu : Fie matricea ⎟⎟
⎠⎞
⎜⎜
⎝⎛=654321A și vectorii ()987=B , ⎟⎟
⎠⎞
⎜⎜
⎝⎛
−−=21C
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

1. INTRODUCERE ÎN MATLAB

5C=[-1;-2] → C =
-1
-2

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.

Exemplu : Pentru A, B, C defi nite anterior verifica ți:
A(2,3) → ans =
6
A(4) → ans =
5
B(2) → ans =
8
C(2) → ans =
– 2

Dacă dorim să schimbăm elementele unei matrice sau s ă mai adăugăm
alte elemente, f ără a mai rescrie într eaga matrice, proced ăm ca în exemplul
următor:
A(2,3)=0 → A =
1 2 3
4 5 0
A(3,3)=-3 → A =
1 2 3
4 5 0 0 0 -3
C(3)=6
→ C =
-1 -2
6

Se pot construi matrice de dimensiuni mai mari pornind de la matrice de
dimensiuni mai reduse. Pentru exem plificare vom folosi matricea A și vectorii B
și C în ultima lor form ă (A – 3 x 3, B – 1 x 3, C – 3 x 1):

1. INTRODUCERE ÎN MATLAB

6D=[A;B] → D =
1 2 3
4 5 0 0 0 -3 7 8 9
// s-a construit matricea D de dimensiune 4 x 3, prin ad ăugarea vectorului B la
matricea A (ca ultim ă linie).
Atenție: A și B au acela și număr de coloane (3) pentru a fi posibil ă construcția.

E=[A,C] → E =
1 2 3 -1
4 5 0 -2 0 0 -3 6
// s-a construit matricea E de dimensiune 3 x 4, prin ad ăugarea vectorului C la
matricea A (ca ultim ă coloană).
Atenție: A și C au acela și număr de linii (3) pentru a fi posibil ă construcția.

Dacă v este un vector atunci:
• 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, … pân ă la
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 și k.
• v(:) – dacă vectorul este linie atunci el devine coloan ă; dacă vectorul este
coloană atunci el r ămâne nemodificat.

Dacă M este o matrice atunci:
• M(:,j) – selecteaz ă coloana j a matricei M.
• M(i,:) – selecteaz ă linia i a matricei M.
• M(:,i:j) – selecteaz ă coloanele de la i la j ale matricei M.
• M(i:j,:) – selecteaz ă liniile de la i la j ale matricei M.
• M(:,i:j:k) – selecteaz ă coloanele i, i + j, i + 2j , … pân ă la k ale matricei
M (selecteaz ă cu pasul j).
• M(i:j:k,:) – selecteaz ă liniile i, i + j, i + 2j , … pân ă la k ale matricei 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 matricei M.
• M(:,[i,j,k]) – selecteaz ă coloanele i, j și k ale matricei M.
• M([i,j,k],:) – selecteaz ă liniile i, j și k ale matricei M.

1. INTRODUCERE ÎN MATLAB

7• M([i,j,k],[l,m,n]) – extrage submatricea format ă cu elementele
aflate la intersec ția liniilor i, j și k și coloanelor l, m și n ale matricei M.
• M(:,:) – selecteaz ă întreaga matrice M.
• M(i:j) – selecteaz ă elementele de i la j ale matricei M și le pune sub forma
unui vector linie (elementele într-o matrice se num ără pe coloane).
• M(:) – selecteaz ă toate elementele matricei M și le pune sub forma unui
vector coloan ă (pune coloanele mat ricei 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 matrice și vectori.

1.2.4. Vectori și matrice uzuale

• Generarea vectorilor cu pas liniar
Sintaxe :
– v=inițial:pas:final – se genereaz ă un vector linie v cu elementele
începând de la inițial la final , cu pasul egal cu pas (pasul poate fi și
negativ dar atunci valoarea ini țială trebuie s ă fie mai mare d ecât valoarea
finală).
– v=inițial:final – se genereaz ă un vector linie v cu elementele
începând de la inițial la final , cu pasul egal cu 1.
– v=linspace(minim,maxim,num ăr_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 număr_de_elemente .

Verificați următoarele exemple :
v=3:7:40
u=5:10
d=17:-3:4
l=linspace(17,58,4)
q=linspace(pi,-pi,6)

• Generarea vectorilor cu pas logaritmic
Sintaxe:
– v=logspace(minim,maxim) – se genereaz ă un vector linie v având 50
de elemente distribuite logaritmic între minim10și maxim10 .
– v=logspace(minim,maxim,num ăr_de_elemente) – se genereaz ă
un vector linie v având număr_de_elemente elemente distribuite
logaritmic între minim10și maxim10 .

1. INTRODUCERE ÎN MATLAB

8Atenție: Dacă maxim=pi atunci elementele vor fi distribuite logaritmic între
minim10și π.
Verificați următoarele exemple :
g=logspace(1,2)
r=logspace(1,pi)
h=logspace(1,2,5) k=logspace(0,pi,5)

• Matricea goal ă
Sintaxa :
– x=[] – genereaz ă o matrice goal ă (fără nici un element)

Exemplu :
x=[] → x =
[]

• ones – Matricea unitate
Sintaxe :
– ones(n) – returneaz ă o matrice de dimensiune n x n cu toate elementele
egale cu 1.
– ones(m,n) – returneaz ă o matrice de dimensi une m x n cu toate
elementele egale cu 1.
– ones(size(M)) – returneaz ă o matrice de dimensiunea matricei M cu
toate elementele egale cu 1.

Verificați următoarele exemple :
ones(3)
ones(1,5)
ones(5,1) ones(3,2)
ones(size(D))
// unde D este matricea definit ă anterior (vezi pag. 6)

• zeros – Matricea zero
Sintaxe :
– zeros(n) – returneaz ă o matrice de dimensiune n x n cu toate elementele
egale cu 0.
– zeros(m,n) – returneaz ă o matrice de dimensiune m x n cu toate
elementele egale cu 0.
– zeros(size(M)) – returneaz ă o matrice de dimensiunea matricei M cu
toate elementele egale cu 0.

1. INTRODUCERE ÎN MATLAB

9Verificați următoarele exemple :
zeros(3)
zeros(1,5)
zeros(5,1) zeros(3,2)
zeros(size(D))
// unde D este matricea definit ă anterior (vezi pag. 6)

• eye – Matricea identitate
Sintaxe :
– eye(n) – returneaz ă o matrice identitate de dimensiune n x n.
– eye(m,n) – returneaz ă o matrice de dimensiune m x n 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 matricei M, av ând elementele primei di agonale egale cu 1 iar
restul elementelor egale cu 0.

Verificați următoarele exemple :
eye(3)
eye(2,3)
eye(3,2)
eye(size(D)) // unde D este matricea definit ă anterior (vezi pag. 6)

• rand – Matricea cu numere aleatoare cu distribu ție uniform ă
Sintaxe :
– rand(n) – returneaz ă o matrice de dimensiune n x n având drept elemente
numere aleatoare cu distribu ție uniform ă între 0 și 1.
– rand(m,n) – returneaz ă o matrice de dimensi une m x n având drept
elemente numere aleatoare cu distribu ție uniform ă între 0 și 1.
– rand(size(M)) – returneaz ă o matrice de dimensiunea matricei M având
drept elemente numere aleatoare cu distribu ție uniform ă între 0 și 1.

Verificați următoarele exemple :
rand(3)
rand(1,5)
rand(5,1) rand(3,2)
rand(size(D))
// unde D este matricea definit ă anterior (vezi pag. 6)

• randn – Matricea cu numere aleatoare cu distribu ție normal ă (gaussiană)
Sintaxe :
– randn(n) – returneaz ă o matrice de dimensiune n x n având drept elemente
numere aleatoare cu distribu ție normal ă (gaussian ă) de medie nul ă și varianța
unitară.

1. INTRODUCERE ÎN MATLAB

10- randn(m,n) – returneaz ă o matrice de dimensiune m x n având drept
elemente numere aleatoare cu distribu ție normal ă de medie nul ă și varianța
unitară.
– randn(size(M)) – returneaz ă o matrice de dimensiunea matricei M
având drept elemente nume re aleatoare cu distribu ție normal ă (gaussian ă) de
medie nul ă și varianța unitară.
Verificați următoarele exemple :
randn(3)
randn(1,5) randn(5,1)
randn(3,2)
randn(size(D))
// unde D este matricea definit ă anterior (vezi pag. 6)

• diag – Matricea diagonal ă
Sintaxe :
Dacă v este un vector (linie sau coloan ă) atunci
– 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.
Dacă M este o matrice atunci
– diag(M) – returneaz ă un vector coloan ă ce conține elementele de pe
diagonala principal ă a matricei 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,5)
A=randn(5)
Verificați următoarele exemple :
diag(a)
diag(a,1) diag(a,-1)
diag(a,2)
diag(a,-2) diag(A)
diag(A,2)
diag(A,-2) diag(diag(A))

1. INTRODUCERE ÎN MATLAB

11• tril – Matricea inferior triunghiular ă
Sintaxe :
– tril(M) – extrage matricea inferior triunghiular ă din matricea M (anuleaz ă
toate elementele matri cei M de deasupra diagonalei principale).
– tril(M,k) – înlocuie ște cu 0 toate elementele de deasupra diagonalei k
din matricea M (raportarea se face la diagonala principal ă – vezi sintaxa de la
diag ).

Pentru matricea A definită anterior verifica ți următoarele exemple :
tril(A)
tril(A,1) tril(A,-1)

• triu – Matricea superior triunghiular ă
Sintaxe :
– triu(M ) – extrage matricea superior triunghiular ă din matricea M (anuleaz ă
toate elementele matricei M de sub diagonala principal ă)
– triu(M,k) – înlocuie ște cu 0 toate elementele de sub diagonala k din
matricea M (raportarea se fa ce la diagonala principal ă – vezi sintaxa de la
diag ).

Pentru matricea A definită anterior verifica ți următoarele exemple :
triu(A)
triu(A,1) triu(A,-1)

1.2.5. Dimensiunea unei matrice. Determinantul și inversa unei matrice

• length,size – Determinarea dimensiunii variabilelor
Sintaxe :
Dacă v este un vector și M este o matrice m x n atunci
– length(v) – returneaz ă numărul de elemente (lungimea) vectorului v.
– length(M) – returneaz ă maximul dintre num ărul de linii și numărul de
coloane al matricei 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.
– [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.

1. INTRODUCERE ÎN MATLAB

12Se va 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)
Verificați următoarele exemple :
length(a)
length(b)
length(C)
size(a) size(b)
size(C)

• det – Determinantul unei matrice
Sintaxă:
Dacă M este o matrice p ătratică (numărul de linii = num ărul de coloane) atunci
– det(M) – calculeaz ă determinantul matricei M.

Se vor defini dou ă matrice:
M=randn(4)
N=randn(4,3)
Verificați următoarele exemple :
det(M)
det(N)

• inv – Inversa unei matrice
Sintaxă:
Dacă M este o matrice p ătratică cu determinantul di ferit de zero atunci
– inv(M) – calculeaz ă inversa matricei M.

Verificați folosind matricele M și N definite la punctul precedent.

E1. Exercițiu.
Fie vectorii linie [ 0 ,0 . 1 ,0 . 2 , , 2 ]=a " și coloană 1
1⎡⎤
⎢⎥=⎢⎥
⎢⎥⎣⎦b#.
a) Ce lungime trebuie s ă aibă b astfel ca s ă aibă sens înmul țirea (în sens
matricial) a*b? Inițializați în MATLAB cei doi vectori și realizați înmulțirea.
Ce operație se efectueaz ă?
b) Realizați înmulțirea b*a.
c) Realizați înmulțirea element cu element a celor doi vectori. Ce rezultat se
obține?

1. INTRODUCERE ÎN MATLAB

13 1.2.6. Instruc țiuni de control logic. Operatori rela ționali și operatori logici


if,else,elseif – Execuția condiționată
Sintaxe :
– if expresie
instruc țiuni
end
// dacă expresie este adev ărată se execut ă instruc țiuni ;
dacă expresie este falsă se trece dup ă end.
– if expresie
instruc țiuni_1
else
instruc țiuni_2
end
// dacă expresie este adev ărată se execut ă instruc țiuni_1 ;
dacă expresie este falsă se execut ă instruc țiuni_2 .

– if expresie_1
instruc țiuni_1
elseif expresie_2
instruc țiuni_2
end
// dacă expresie_1 este adev ărată se execut ă instruc țiuni_1 ;
dacă expresie_1 este falsă și expresie_2 este adev ărată se execut ă
instruc țiuni_2 .

• for – Repetarea unui num ăr de instruc țiuni de un anumit num ăr de ori
Sintaxă:
– for index=ini țial:pas:final
instruc țiuni
end
// pentru index parcurgând intervalul de la inițial la final cu pasul
pas se execut ă instruc țiuni .

• while – Repetarea unui num ăr de instruc țiuni atâta timp cât o condi ție
specificat ă este adev ărată
Sintaxă:
– while expresie
instruc țiuni
end

1. INTRODUCERE ÎN MATLAB

14 // cât timp expresie este adev ărată se execut ă instruc țiuni .

• Operatori rela ționali
– < – mai mic
– <= – mai mic sau egal
– > – mai mare
– >= – mai mare sau egal
– == – identic
– ~= – diferit

• Operatori logici
– & – operatorul ȘI logic
– | – operatorul SAU logic
– ~ – operatorul NU logic

1.2.7. Crearea program elor MATLAB (crearea fi șierelor de comenzi *.m)

Pentru secven țe lungi de comenzi se recomand ă crearea și lansarea în
execuție a unui program MATLAB. Acesta este un fi șier “text” având extensia
.m și conținând succesiunea dorit ă de comenzi MATLAB. Dup ă creare, fi șierul
devine o nou ă comandă externă MATLAB, care poate fi lansat ă în execuție prin
simpla introducere de la tastatur ă a numelui fi șierului (fără extensia .m).
Pentru crearea unui astfel de fi șier se parcurg urm ătorii pași:
– în bara de meniuri a ferest rei de comenzi se selecteaz ă File, iar în interiorul
acesteia New, urmată de M-file. Se va deschide astfel o nou ă fereastră (sesiune
de editare cu edito rul NOTEPAD) cu bar ă de meniuri proprie și cu numele
Untitled . În acest fi șier se scrie programul MATLAB dorit.
– pentru a salva fi șierul astfel creat sub un alt nume se selecteaz ă din bara de
meniuri a noii ferestre comanda File, urmată de Save A s…; va apărea o nou ă
fereastră de dialog în care vom preciza numele fi șierului ( File n ame:) însoțit
de extensia .m și locul unde dorim s ă îl salvăm (Save i n:).

Atenție:
– pentru a rula un program MATLAB trebuie ca directorul în care a fost salvat
să fie directorul de lucru (vezi comanda cd, pagina 3 ).
– pentru a fi luate în considerare eventualele modific ări făcută într-un
program MATLAB, î nainte de o nou ă rulare, fi șierul trebuie salvat (File,
urmat de Save).
– denumirea fi șierului nu trebuie s ă înceapă cu cifre sau sa fie un cuvânt cheie
(instrucțiune) Matlab. Denumiri de genul „ex_1.m” sa u „progr_2.m” sunt
suficiente.

1. INTRODUCERE ÎN MATLAB

15E2. Exercițiu:
Se creeaz ă un fișier nou care trebuie salvat în directorul d:/student/pns/ nrgrupa
Folosind sintaxele și indicațiile din sec țiunile 1.2.6. și 1.2.7. realiza ți un program
MATLAB care s ă genereze un vector cu elemente aleatoare cu distribu ție
normală (gaussian ă) și să afișeze elementele negative ale acestui vector.

1.2.8. Crearea func țiilor MATLAB (crearea fi șierelor func ție)

Dac ă prima linie a unui fi șier MATLAB (*.m) con ține la început cuvântul
function atunci fi șierul respectiv e declarat ca fi șier funcție. Aceste fi șiere
pot fi adăugate ca func ții noi în structura MA TLAB. Forma general ă a primei
linii a unui fi șier funcție este:
function [parametrii_ie șire]=nume(parametrii_intrare)

cu următoarele semnifica ții:
– function – cuvânt cheie care declar ă fișierul ca fi șier funcție.
– 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_ie șire – reprezint ă parametrii de ie șire ai func ției; trebuie
separați prin virgul ă și cuprinși între paranteze drepte.
– parametrii_intrare – reprezint ă parametrii de intrare ai func ției;
trebuie separa ți prin virgul ă și cuprinși între paranteze rotunde.

1.2.9. Opera ții aritmetice. Opera ții asupra numerelor complexe

• Operatori aritmetici
– + – adunare
– – – scădere
– * – înmulțire
– .* – înmulțire între dou ă matrice (sau vectori) element cu element
– / – împ ărțire
– ./ – împărțire între dou ă matrice (sau vectori) element cu element
– ^ – ridicare la putere
– .^ – ridicare la putere a unei matrice (sau vector) element cu element
– ’ – transpunere și conjugare
– .’ – transpunere

1. INTRODUCERE ÎN MATLAB

16Să se defineasc ă următoarele elemente:
⎟⎟
⎠⎞
⎜⎜
⎝⎛=654321A , ⎟⎟
⎠⎞
⎜⎜
⎝⎛
−+−=i ii iB30 2 1, ( )03 1i a+= , 21/3
2b⎛⎞=⎜⎟⎝⎠

Verificați și explicați următoarele exemple :
A+B , A+3 , B-2 , B-i , a+a , A*B , A.*B , A*B.’ , a.*a ,
a*a , A*a , A*a’ , A*a.’ , A’*b , B’ , B.’ , A’ , A.’ , A^2 ,
A.^2 , 1-b , b’*b , b*b , b.*b , b^3 , b.^3 , 2/A , 2./A ,
2/b , 2./b .

• Operații asupra numerelor complexe
– abs – calculeaz ă valoarea absolut ă (modulul).
– angle – calculeaz ă faza.
– conj – calculeaz ă complex conjugatul.
– real – extrage partea real ă.
– imag – extrage partea imaginar ă.
Verificați comenzile utilizând drept argu mente elementele A, B, a și b definite
anterior.

1.2.10. Fun ții matematice uzuale


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

• Funcțiile trigonometrice directe
– sin – calculeaz ă sinusul
– cos – calculeaz ă cosinusul
– tan – calculeaz ă tangeta
– cot – calculeaz ă cotangenta
– sec – calculeaz ă secanta
– csc – calculeaz ă cosecanta

• Funcțiile trigonometrice inverse
– asin – calculeaz ă arcsinus

1. INTRODUCERE ÎN MATLAB

17- acos – calculeaz ă arccosinus
– atan – calculeaz ă arctangenta
– atan2 – calculeaz ă arctangenta dac ă argumentul este complex
– acot – calculeaz ă arccotangenta
– asec – calculeaz ă arcsecanta
– acsc – calculeaz ă arccosecanta

• Funcțiile hiperbolice directe
– sinh – calculeaz ă sinusul hiperbolic
– cosh – calculeaz ă cosinusul hiperbolic
– tanh – calculeaz ă tangeta hiperbolic ă
– coth – calculeaz ă cotangenta hiperbolic ă
– sech – calculeaz ă secanta hiperbolic ă
– csch – calculeaz ă cosecanta hiperbolic ă

• Funcțiile hiperbolice inverse
– asinh – calculeaz ă arcsinus hiperbolic
– acosh – calculeaz ă arccosinus hiperbolic
– atanh – calculeaz ă arctangenta hiperbolic ă
– acoth – calculeaz ă arcotangenta hiperbolic ă
– asech – calculeaz ă arcsecanta hiperbolic ă
– acsch – calculeaz ă arccosecanta hiperbolic ă

Pentru informa ții despre modul de utilizare al acestor func ții folosiți comanda
help însoțită de numele func ției dorite (vezi sintaxa de la pagina 2).

1.2.11. Fun ții destinate analizei de date

• sum,prod – Suma și produsul
Sintaxe :
Dacă v este un vector și M este o matrice atunci
– sum(v) – calculeaz ă suma elementelor vectorului v.
– prod(v) – calculeaz ă produsul elementelor vectorului v.
– sum(M) – returneaz ă un vector linie având ca el emente suma elementelor
fiecărei coloane din matricei M.
– prod(M) – returneaz ă un vector linie având ca elemente produsul
elementelor fiec ărei coloane din matricei M.

Se vor defini urm ătoarele elemente: ⎟⎟
⎠⎞
⎜⎜
⎝⎛=654321A , ()831=a

1. INTRODUCERE ÎN MATLAB

18 Să se verifice urm ătoarele
exemple :
sum(a)
sum(A) sum(sum(A))
prod(a)
prod(A) prod(prod(A))

• max,min – Maximul și minimul
Sintaxe :
Dacă v este un vector și M este o matrice atunci
– max(v) – returneaz ă elementul maxim al vectorului v.
– min(v) – returneaz ă elementul minim al vectorului v.
– [m,p]=max(v) – returneaz ă elementul maxim al vectorului ( m) precum și
indicele elementului maxim ( p); dacă există maxime multiple se returneaz ă
indicele primului dintre ele.
– [m,p]=min(v) – returneaz ă elementul minim al vectorului ( m) precum ș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 matricei M.
– min(M) – returneaz ă un vector linie având ca el emente minimul elementelor
din fiecare coloan ă a matricei M.
– [m,p]=max(M) – returneaz ă un vector linie m având ca elemente maximul
elementelor din fiecare coloan ă a matricei M precum și un vector linie p ce
conține poziția maximului respectiv în cadrul fiec ărei coloane.
– [m,p]=min(M) – returneaz ă un vector linie m având ca elemente minimul
elementelor din fiecare coloan ă a matricei M precum și un vector linie p ce
conține poziția minimului respectiv în cadrul fiec ărei coloane.

Verificați sintaxele anterioare folosind matricea A și vectorul a definite mai sus.

• mean – Media aritmetic ă
Sintaxe :
Dacă v este un vector și M este o matrice atunci
– 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 matricei M.

Verificați sintaxele anterioare folosind matricea A și vectorul a definite mai sus.

1. INTRODUCERE ÎN MATLAB

19E3. Exercițiu:
Realizați un program MATLAB care generaz ă un vector cu elemente complexe.
Realizați (un alt fi șier) o func ți e M A T L A B c a r e a v â nd drept parametru de
intrare vectorul cu valori complexe returneaz ă ca parametri de ie șire:
– media aritmetic ă a părților reale ale elementelor vectorului;
– un vector ce con ține elementele vectorului ini țial ridicate la p ătrat;
– o matrice ob ținută din înmul țirea vectorului ini țial cu transpusul s ău.
Atenție:
Pentru a nu se afi șa rezultate intermediare din func ție sau elementele unor
variabile se va folosi ; la sfârșitul liniei respective de program.

1.2.12. Reprezent ări grafice

• plot,stem – Reprezent ări grafice în coordonate liniare
Sintaxe :
Dacă v este un vector și M este o matrice atunci
– 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 matricei M (fiecare
din coloanele matricei 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 atunci
– 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
matricei M atunci se vor reprezenta pe acela și grafic coloanele matricei M în
funcție de elementele vectorului x; dac ă lungimea vectorului x este egal cu
numărul de coloane al matricei M at unci se vor reprezenta pe acela și grafic
liniile matricei M în func ție de elementele vectorului x; dacă lungimea
vectorului x nu este egal ă cu una din dimensiunile matricei M atunci
reprezentarea nu este posibil ă.
– plot(M,N) – se vor reprezenta pe acela și grafic coloanele matricei N în
funcție de coloanele matricei M (coloana k din matricea N va fi reprezentat ă
funcție de coloana k din matricea M, unde k = 1, 2, … , num ărul de coloane);
dacă cele dou ă matrice nu au aceea și dimensiune atunci reprezentarea nu
este posibil ă.

1. INTRODUCERE ÎN MATLAB

20Pentru reprezentarea mai multor grafice în aceea și fereastră grafică, 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 matrice); r ămân valabile considerentele f ăcute în sintaxele anterioare,
referitor la cazurile când av em vectori sau matrice; dacă xi și yi (i =1, 2,…,n)
nu au aceea și dimensiune atunci reprezentarea nu este posibil ă.

Atenție:
Se pot folosi diverse linii, markere și culori de reprezentare a graficelor. Vezi
help plot .

Funcția stem realizeaz ă o reprezentare în form ă “discretă” a datelor.
Pentru variantele de MATLAB 5 sau MATLAB 6 se pot folosi oricare din
sintaxele prezentate la plot , exceptând ultima sintax ă. Pentru variantele de
MATLAB 4 argumentele de intrare ale func ției stem nu pot fi decât vectori, iar
reprezentarea grafic ă nu se poate face decât cu o singur ă culoare (se pot folosi
însă mai multe tipuri de linii și markere).
Vezi help stem .

• loglog,semilogx,semilogy – Reprezent ări grafice în coordonate
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 baz ă 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ă.

• subplot – 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
“miniferestre”, în fiecare dintre acestea put ând fi plasat câte un grafic. Fereastra
grafică este astfel privit ă sub forma unei matrice cu m linii și n coloane, deci în
total m⋅n “miniferestre”. Num ărarea acestor “miniferestr e” se face pe linii. De
exemplu, dac ă vrem să împărțim fereastra grafic ă în 3⋅3 = 9 ”miniferestre” vom
avea următoarea ordine:
12 3
45 6
78 9

1. INTRODUCERE ÎN MATLAB

21Sintaxa:
– subplot(m,n,p) – împarte fereastra grafic ă într-o matrice m x n (m ⋅n
“miniferestre”), iar p reprezint ă numărul fiecărei “miniferestre” în matricea
grafică respectiv ă (numărarea se face pe lin ii); sintaxa respectiv ă este urmat ă
de comanda propriu-zis ă de afișare a graficului, care poa te fi oricare din cele
prezentate pân ă acum (stem , plot , loglog , semilogx , semilogy ).

• axis – 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 .

Sintaxa :
– axis([x0 x1 y0 y1] ) – pe abscisa se va vizu aliza între valorile x0 și
x1 iar pe ordonat ă între y0 și y1; aceast ă sintaxă se plaseaz ă după comanda
de reprezentare grafic ă.

• title,xlabel,ylabel,gtext,grid – 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, înlesnind as tfel citirea graficului.
– gtext(’text’) – plaseaz ă pe grafic textul text (folosind mouse-ul).
Toate aceste sintaxe urmeaz ă după comanda de reprezentare grafic ă.

• hold – 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 .
Sintaxa :
– 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 reprezent area în ferestre grafice
separate (dezactiveaz ă comanda hold on ).

Atenție:
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

1. INTRODUCERE ÎN MATLAB

22contrar, 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) .

Exemple : Se vor tasta direct în fereastra de comenzi, explicând rezultatele:
x=0:0.2:2*pi;
size(x)
s=sin(x); size(s)
plot(s),grid,title(’sinus’),xlabel(’n’)
stem(s),grid,title(’sinus’),xlabel(’n’) n=linspace(min(x),max(x),length(x));
size(n)
plot(n,s,’r*’),grid,title(’sinus’),xlabel(’n’) hold on
stem(n,s),grid,xlabel(’n’),ylabel(’amplitudine’)
hold off figure(1)
plot(n,s),grid,axis([0 pi min(s) max(s)])
figure(2) plot(n,s,n,s-pi/2),grid
// se închid ambele ferestre grafice și se continu ă tastarea în fereastra de comenzi
c=cos(x);
subplot(2,1,1),stem(n,s),title(’sinus’),grid
subplot(2,1,2),stem(n,c),title(’cosinus’),grid
M=[c;s]; plot(n,M),grid
N=[n;n];
plot(N,M),grid plot(N’,M’),grid
z=1:1000;
p=z.^2; plot(z,p),grid
loglog(z,p),grid
semilogx(z,p),grid semilogy(z,p),grid gtext(’Ultimul grafic!!!’)
// cu ajutorul mouse-ului plasa ți pe grafic textul respectiv, în pozi ția dorită.

1. INTRODUCERE ÎN MATLAB

23E4. Exercițiu:
Realizați un program MATLAB în care s ă generați și să reprezenta ți grafic
folosind func ția stem următorii vectori:
a) [0,0,0,0,0,1 ,0,0,…,0]z= , vectorul z având lungimea 21. Reprezentarea
grafică se va face în dou ă “miniferestre” (func ția subplot) vectorul z în
funcție de n = 0:20 respectiv de m= –5:15 .
b) 10=−tn , reprezentat grafic în func ție de n = 0:20 .
c) 1sin17x nπ⎛⎞=⎜⎟⎝⎠, 2515≤≤− n și 2cos
23x nπ⎛⎞=⎜⎟⎝⎠, 500≤≤n
cele două secvențe vor fi reprezentate în:
– figura 1 – în acela și sistem de coordonate (pe acela și grafic);
– figura 2 – folosind dou ă “miniferestre” grafice plasate una sub alta.
Reprezenta ți cele dou ă figuri folosind comanda plot iar apoi încerca ți
reprezentarea lor folosind comanda stem .

Cu funcția plot se pot reprezenta grafic semnale sau func ții “continue” deoarece
se unesc cu linie continu ă valorile care se reprezint ă. Astfel se pot reprezenta
semnale continue alegând variabila timp cu pasul mai mic decât varia ția
semnalului reprezentat. De exemplu dac ă perioada semnalului e 0.01 secunde se
poate alege variabila temporal ă cu pasul de 0.001s: t = 0:0.001:5 (secunde).

Exemplu:
Să se reprezinte grafic cu func ția plot un semnal sinusoidal de frecven ță 50 Hz,
de durată 0.2 secunde și amplitudine 2. Se va alege rezolu ția temporal ă 1ms.
F = 50;
t = 0:0.001:0.2;
s = 2*sin(2*pi*F*t); plot(t,s,'.-'),xlabel('Timp [s]'),grid

E5. Exercițiu:
a) Modificați pasul de varia ție a variabilei t la 0.01 și apoi la 0.0002. Comenta ți
diferențele.
b) Măsurați pe grafic perioada semnalul ui sinusoidal în cele 3 situa ții.
c) Generați un semnal cosinusoidal de frecven ță 20 Hz pe care s ă-l reprezenta ți
cu culoare ro șie pe acela și grafic peste semnalul sinusoidal.

1. INTRODUCERE ÎN MATLAB

24Un semnal discret provine din e șantionarea unui semnal continuu cu o perioad ă
de eșantionare Ts. Valorile stocate în vectorul care reprezint ă semnalul discret
corespund valorilor amplitudinii semnal ului continuu la momente întregi de
perioada de e șantionare ,snT n⋅∈].
() ( )cs sns n T=
De exemplu pentru un semnal sinusoidal de frecven ță F0
00 () s i n ( 2 )cstA F t π = ⋅⋅
Semnalul e șantionat va fi:
0
00 0 ( ) sin(2 ) sin 2s
sFsnA F n T A nFππ⎛⎞=⋅ ⋅ ⋅ = ⎜⎟
⎝⎠
Notând frecven ța normat ă 0
0FfFs= , respectiv pulsa ția normat ă
0
0022
sFfFωπ π== rezultă:
()00 0 0 ( ) sin(2 ) sinsnA f nA n π ω =⋅ ⋅ =

Exemplu:
Să se reprezinte grafic cu func ția stem un semnal discret ob ținut prin
eșantionarea unui semnal sinusoidal de frecven ță 300 Hz, de durat ă 10
milisecunde și amplitudine 1. Frecven ța de eșantionare Fs = 4kHz. Câte
eșantioane are semnalul discret?
F0 = 300; Fs = 4000;
W0 = 2*pi*F0/Fs;
N = 10*4; // Numar de esantioane N=10ms*4kHz n = 0:N-1;
s = 2*sin(w0*n);
stem(n,s),grid

E6. Exercițiu:
Realizați un program care s ă genereze un semnal binar aleator (valori de 0 și 1),
perioada de bit: 0.5 ms e șantionat cu frecven ța de eșantionare F s = 12 kHz.
a) Reprezenta ți cu funcția plot semnalul continuu în timp absolut (în
milisecunde).
b) Reprezenta ți cu funcția stem semnalul discret în func ție de n.

1. INTRODUCERE ÎN MATLAB

25
Tema de cas ă.

Se va genera un semnal cu rezolutie temporara de 2ms, 20ms
200ms pentru un semnal continuu de tipul:

1. Semnal dreptunghiular periodic cu
ƒ Perioadă: 2 s.
ƒ Factor de um plere: 25%.
ƒ Nivel maxim: +0.5.
ƒ Nivel m inim: -1.
2. Semnal triunghiular periodic
ƒ Perioadă: 5 s.
ƒ Nivel maxim: +1.
ƒ Nivel m inim: -2.
ƒ Panta+ 1 V/s Obs ervație: Panta– [V/s] rezult ă din calcule
3. Semnal dreptunghiular m ultinivel, aleator
ƒ Durata fiec ărui nivel: 0,25 s.
ƒ Nivelurile
a) {-1, 1}
b) {-3,-1,1,3}
c) {-5,-3,-1,1,3,5}
d) {-7,-5,-3,-1,1,3,5,7}
4. Semnal sinusoidal redresat m ono alternanță
ƒ Perioada sem nalului sinusoidal inițial (neredresat) 3 s .
ƒ Amplitudine: 0.8.
5. Semnal sinusoidal redresat dublă alternanță
ƒ Perioada sem nalului sinusoidal neredresat: 4 s.
ƒ Amplitudine: 1.5.

Similar Posts