Sunteți pe pagina 1din 15

Laboratorul 1: Introducere n MATLAB

1
Anexa A - L. Grama, C. Rusu, Prelucrarea numeric a semnalelor aplicaii i probleme, Editura UTPRES, 2008

Introducere n MATLAB
A.1. Consideraii generale
n cele ce urmeaz ne propunem s revedem cteva dintre comenzile MATLAB utile n prelucrarea numeric a
semnalelor. Programul MATLAB integreaz analiza numeric, calculul matriceal, procesarea semnalelor,
reprezentrile grafice 2D i 3D, realizarea interfeelor grafice [3].
MATLAB (MATrix LABoratory) este un program interactiv, destinat prelucrrii numerice a datelor furnizate
sub form vectorial sau matriceal. MATLAB-ul include si aplicaii specifice, strnse n TOOLBOX-uri. Acestea sunt
colecii extinse de funcii MATLAB (fiiere *.m) care dezvolt mediul de programare de la o versiune la alta, pentru a
rezolva probleme specifice.
n cazul procesrii 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. Funcii ce se pot utiliza n linia de comand, pentru: analiza filtrelor analogice i digitale; implementarea
filtrelor digitale; proiectarea filtrelor digitale cu rspuns finit la impuls i cu rspuns infinit la impuls i a
filtrelor analogice; discretizarea filtrelor; transformri spectrale i analiza cepstral; analiza spectral i
procesarea statistic a semnalelor; modelarea parametric i predicia liniar; generarea a diferite forme de
und;
2. Interfa grafic pentru: proiectarea i analiza filtrelor i a ferestrelor; analiza i afiarea 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
posibiliti de cutare a explicaiilor att prin index, ct i prin cuprins (grup de funcii Table of Contents).
Programul MATLAB se lanseaz n execuie din mediul WINDOWS astfel: StartAll
ProgramsMATLAB 7.01MATLAB 7.01 (figura A.1). Pe monitor va aprea fereastra de comenzi, ca n figura
A.2.


Figura A.1. Pornirea programului MATLAB


Figura A.2. Fereastra de comand MATLAB

Selecia unei comenzi, din bara de comenzi sau din meniul principal, se poate face cu mouse-ul sau cu ajutorul
sgeilor, prin deplasarea zonelor active sau prin tastarea literei marcate n fiecare subcomand.
Dup lansarea n execuie, programul MATLAB intr n modul de comand, afind prompterul >>, i
ateapt introducerea unei comenzi de ctre utilizator. De exemplu, comanda:
>> var = 0:5
va crea variabila var afind 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 sgeilor de la tastatur, i
(cutarea se face ca ntr-o list).
n afara modului de lucru n linia de comand, MATLAB-ul lucreaz cu programe coninute n fiiere.
Fiierele ce conin instruciuni MATLAB se numesc fiiere M (*.m). Un program MATLAB poate fi scris sub forma
fiierelor script sau a fiierelor function. Un fiier script este un fiier extern care conine o secven de comenzi
Laboratorul 1: Introducere n MATLAB
2
MATLAB. Dup execuia complet a unui fiier script, variabilele create de acest tip de fiier rmn n zona de
memorie a aplicaiei. Dac prima linie a fiierului conine cuvntul function, fiierul respectiv este fiier funcie,
care se caracterizeaz prin faptul c poate lucra cu argumente. La terminarea execuiei unei funcii, n memoria
calculatorului nu rmn dect variabilele de ieire ale acesteia.
- Meniul principal
Pentru a deschide un fiier n Editorul/Debugger-ul MATLAB-ului din meniul de comand se procedeaz
astfel:
1. Pentru un fiier nou, se selecteaz FileNewM-file (figura A.3);
2. Pentru un fiier existent se selecteaz FileOpen i apoi se selecteaz fiierul dorit (figura A.4).


Figura A.3. Crearea unui fiier nou


Figura A.4. Deschiderea unui fiier *.m existent

Din meniul principal se pot seta anumite proprieti, legate de formatul dorit la afiare, fonturi si opiuni de
copiere. Pentru aceasta se selecteaz FilePreferences.
MATLAB-ul lucreaz cu dou tipuri de ferestre: o fereastr de comenzi i una de reprezentri 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 acelai timp. Selectarea ferestrei grafice se face n modul urmtor:
FileNewFigure. Pe monitor va apare o fereastr grafic ca n figura A.5.


Figura A.5. Deschiderea unei noi ferestre grafice
A.1.2. Funcii 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 funcie este obligatoriu s fie scris cu litere mici.
Liniile de comentariu dintr-un fiier script/funcie sunt precedate de caracterul %.
- help furnizeaz informaii despre MATLAB i funciile acestuia;
- what listeaz fiierele *.m, *.mat, *.mex din directorul curent;
- lookfor listeaz toate numele de fiiere care au n prima linie a help-ului cuvintele menionate ca
argument, precum i prima linie din help;
- path returneaz cile cu care lucreaz MATLAB-ul, locul unde sunt cutate fiierele apelate;
- who listeaz variabilele curente din memorie;
Laboratorul 1: Introducere n MATLAB
3
- whos furnizeaz informaii suplimentare referitoare la variabilele din spaiul de lucru (nume,
dimensiune, tip real sau complex);
- exist verific dac o variabil exist n mediul MATLAB;
- format stabilete formatul extern de afiare al numerelor pe ecran;
S se verifice toate tipurile de format folosind valoarea x = pi.
Acelai lucru se poate face din meniu, selectnd FilePreferencesGeneral, iar aici formatul dorit (figura
A.6).
- clear terge din memorie una sau mai multe variabile.
- dir afieaz numele tuturor fiierelor 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 dect dac directorul respectiv
este directorul de lucru.


Figura A.6. Modificarea numrului de cifre zecimale pentru afiarea variabilelor
A.1.3. Fiiere MATLAB
Fiierele MATLAB *.m pot fi privite ca macro-uri ale comenzilor MATLAB salvate n fiiere cu extensia .m,
adic numefisier.m. Un fiier *.m poate fi o funcie cu variabile de intrare i ieire sau o list de comenzi.
MATLAB-ul cere ca fiierele *.m s fie salvate fie n directorul de lucru, fie ntr-un director care este
specificat n lista cilor din MATLAB. Pentru a putea accesa fiierul *.m dintr-un anumit director, trebuie s adugam
directorul/fiierul 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. Adugarea directorului/fiierului 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 adugare a unei noi ci. De exemplu:
>> addpath D:\Scoala\L1_Introducere_MATLAB % are ca efect adugarea noii ci, adic se vor putea apela
% fiierele *.m din directorul ce are calea D:\Scoala\L1_Introducere_MATLAB.

Laboratorul 1: Introducere n MATLAB
4
Fiierele MATLAB pot utiliza variabile definite de utilizator, variabile definite cu comanda input. S
presupunem c dorim s rulm un fiier MATLAB pentru diferite valori ale unei variabile N. Atunci, n fiierul
MATLAB, se utilizeaz urmtoarea comand:
N = input(N=)
A.1.4. Definirea variabilelor
Variabilelor li se atribuie valori numerice, tiprindu-se direct expresia numeric. Dac se tasteaz n linia de
comand:
>> var1 = 1+2
vom obine rezultatul:
var1 =
3

Rezultatul nu se afieaz dac se pune punct i virgul la sfritul expresiei, de exemplu:
>> var1=1+2;
Unei variabile i se poate atribui o formul ce utilizeaz operatorii aritmetic definii n MATLAB (vezi tabel
A.1), i una sau mai multe mrimi definite anterior chiar n cadrul comenzii curente. De exemplu, presupunnd c
var1 este definit anterior:
>> var2 = var1^4
va returna valoarea:
var2=
81

n MATLAB se utilizeaz urmtorii operatori aritmetici [12]:

Simbol Semnificaie
+ Adunare
- Scdere
* nmulire
.* nmulire ntre dou matrici (sau vectori) element cu element
/ mprire
./ mprire 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 operaiilor
Tabel A.1. Operatori aritmetici n MATLAB

n MATLAB exist variabile predefinite acestea nu pot fi declarate i sunt accesibile global n orice fiier
*.m. Aceste variabile speciale sunt introduse n mod obinuit n construciile funciilor MATLAB, ele returnnd valorile
scalare utile [11]. Cteva dintre variabilele i constantele speciale sunt:
- ans variabil creat automat n care este returnat rezultatul unui calcul, atunci cnd expresia nu a avut
asignat un nume;
Dac se tasteaz direct n fereastra de comand:
>> 3
obinem
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 t = ;
- i 1 = - variabil utilizat pentru introducerea numerelor complexe;
- j 1 = - alternativ pentru i;
- inf variabil utilizat pentru reprezentarea lui + n aritmetica IEEE, rezultat al mpririi 1.0 0.0 ;
- NaN variabil folosit pentru reprezentarea lui Not-a-Number, n aritmetica IEEE, rezultat al mpririi
nedefinite 0.0 0.0.
Utilizatorul poate defini i alte variabile, cu ajutorul unor funcii predefinite.

Se pot verifica urmtoarele exemple (tastnd direct n fereastra de comenzi):
p = pi; % nu se va afia valoarea p (dar exist n memorie).
q = pi/2 % va afia valoarea q.
% r = pi/4 % nu se ia n considerare aceast linie.
Laboratorul 1: Introducere n MATLAB
5
v = r/2 % va rezulta o eroare deoarece nu l cunoate pe r.
s = 1+2+3+... enter % instruciunea se continu i pe linia urmtoare.
4+5+6
1. Operaii asupra numerelor complexe
- abs valoarea absolut (modulul);
- angle faza;
- conj valoarea complex conjugat;
- real partea real a unui numr complex;
- imag partea imaginar a unui numr complex.
2. Funciile radical, exponenial i logaritm
- sqrt radical de ordinul 2 (rdcina ptrat);
- exp exponeiala (puteri ale numrului 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. Funciile 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. Funciile 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 informaii despre modul de utilizare al acestor funcii folosii comanda help nsoit de numele funciei dorite.
5. Funcii destinate analizei de date
Dac v este un vector i M este o matrice, atunci avem urmtoarele sintaxe:
sum(v); % calculeaz suma elementelor vectorului v;
prod(v); % calculeaz produsul elementelor vectorului v;
sum(M); % returneaz un vector linie avnd ca elemente suma elementelor fiecrei coloane din
% matricea M;
prod(M); % returneaz un vector linie avnd ca elemente produsul elementelor fiecrei 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;
Laboratorul 1: Introducere n MATLAB
6
% dac exist minime multiple se returneaz indicele primului dintre ele;
max(M); % returneaz un vector linie avnd ca elemente maximul elementelor din fiecare coloan a
% matricii M;
[m, p] = max(M); % returneaz un vector linie m avnd ca elemente maximul elementelor din fiecare coloan a
% matricii M i un vector linie p ce conine poziia maximului respectiv n cadrul fiecrei
% coloane.
min(M); % returneaz un vector linie avnd ca elemente minimul elementelor din fiecare coloan a
% matricii M;
[m, p] = min(M); % returneaz un vector linie m avnd ca elemente minimul elementelor din fiecare coloan a
% matricii M i un vector linie p ce conine poziia minimului respectiv n cadrul fiecrei
coloane.
mean(v); % calculeaz media aritmetic a elementelor vectorului v.
mean(M); % returneaz un vector linie avnd ca elemente media aritmetic a elementelor fiecrei
% 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 asimilai matricilor cu o linie i o coloan
(1 1 ), iar vectorii sunt asimilai matricilor cu o linie (1 n ) sau o coloan ( 1 n ).
Introducerea matricilor n mediul de lucru se face prin una din metodele: introducerea explicit a listei de
elemente; generarea prin instruciuni i funcii; crearea de fiiere *.m; ncrcarea din fiiere de date externe.
Cea mai simpl metod const n utilizarea unei liste explicite. Trebuie respectate urmtoarele reguli:
elementele unei linii trebuie separate prin spaii 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 notaia A(i, j) i semnific elementul de la intersecia 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 6
A
| |
=
|
\ .
i vectorii ( ) 7 8 9 B = ,
1
2
C
| |
=
|

\ .
.
>> 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 corespunztor liniei i i coloanei j;
M(i); % reprezint elementul i din matrice, numrarea elementelor fcndu-se pe coloane.
Pentru un vector v:
v(i); % reprezint elementul de pe poziia i din vector.
Pentru A, B i C definite anterior verificai:
>> A(1, 3)
ans =
3
>> A(2)
ans =
4

Dac dorim s schimbm elementele unei matrici sau s adugm alte elemente, fr a rescrie ntreaga matrice,
se procedeaz astfel:
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 adugarea vectorului B la matricea A
% (ca ultim linie);
% A i B au acelai numr de coloane (3) pentru a fi posibil construcia.
>> 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 adugarea vectorului C la matricea A
% (ca ultim coloan);
% A i C au acelai numr de linii (3) pentru a fi posibil construcia.

Dac v este un vector i M este o matrice, atunci avem urmtoarele sintaxe:
v(i:k); % selecteaz elementele de pe poziiile 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 poziiile 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 poziiile i, j, k;
v(:); % dac vectorul este linie atunci el devine coloan;
% dac vectorul este coloan atunci el rmne 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 intersecia 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 intersecia 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 numr 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).

Verificai 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:
Laboratorul 1: Introducere n MATLAB
8
v = initial:pas:final; % se genereaz un vector linie v cu elementele ncepnd de la initial la final,
% cu pasul egal cu pas (pasul poate fi i negativ dar atunci valoarea iniial trebuie s fie mai
% mare dect valoarea final);
v = initial:final; % se genereaz un vector linie v cu elementele ncepnd 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 ncepnd de la minim la maxim, cu pas
% constant i avnd un numr de elemente egal cu numar_de_elemente.

Verificai componena 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 avnd 50 de elemente distribuite
% logaritmic ntre 10
minim
i 10
maxim
;
v = logspace(minim, maxim, numar_de_elemente);
% se genereaz un vector linie v avnd numar_de_elemente elemente distribuite
% logaritmic ntre 10
minim
i 10
maxim
.
Dac maxim t = , atunci elementele vor fi distribuite logaritmic ntre 10
minim
i t .

Aflai 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 (fr 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.

Verificai coninutul urmtoarele 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.

Verificai dac urmtoarele matrici au toate elementele nule:
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 avnd 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, avnd elementele
% primei diagonale egale cu 1, iar restul elementelor egale cu 0.

Verificai dac urmtoarele 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, avnd distribuie uniform
Sintaxe:
rand(n); % returneaz o matrice de dimensiune nxn avnd drept elemente numere aleatoare distribuite
% uniform ntre 0 i 1;
rand(m, n); % returneaz o matrice de dimensiune mxn avnd drept elemente numere aleatoare distribuite
% uniform ntre 0 i 1.
rand(size(M)); % returneaz o matrice de dimensiunea matricii M avnd drept elemente numere aleatoare
% distribuite uniform ntre 0 i 1.

Verificai componena 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, avnd distribuie normal (gaussian)
Sintaxe:
randn(n); % returneaz o matrice de dimensiune nxn avnd drept elemente numere aleatoare cu
% distribuie normal (gaussian), de medie nul i varian unitar;
randn(m, n); % returneaz o matrice de dimensiune mxn avnd drept elemente numere aleatoare cu
% distribuie normal, de medie nul i varian unitar.
randn(size(M)); % returneaz o matrice de dimensiunea matricii M avnd drept elemente numere aleatoare
% cu distribuie normal (gaussian)de medie nul i varian unitar.

Verificai componena 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 urmtoarele sintaxe:
Laboratorul 1: Introducere n MATLAB
10
diag(v); % returneaz o matrice ptrat diagonal, cu elementele vectorului v pe diagonala principal;
diag(v, k); % returneaz o matrice ptrat 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 conine elementele de pe diagonala principal a matricii M;
diag(M, k); % returneaz un vector coloan ce conine 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);
Verificai 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 urmtoarele sintaxe:
length(v); % returneaz numrul 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 numrul de linii i numrul decoloane al matricii M (maximul
% dintre m i n);
[l, c] = size(M); % returneaz numrul de linii l i numrul 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 urmtoarelor 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 ptratic (numrul de linii = numrul 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 urmtorilor determinani?
>> det(M)
ans =
-8.8564e-001
det(N)
3. Inversa unei matrici
Dac M este o matrice ptratic cu determinantul diferit de zero, atunci avem sintaxa:
inv(M); % calculeaz inversa matricii M.
Verificai aceast sintax, folosind matricile M i N definite anterior.
Laboratorul 1: Introducere n MATLAB
11
A.1.8. Construirea unei funcii
Dac prima linie a unui fiier MATLAB (*.m) conine la nceput cuvntul function, atunci fiierul respectiv
este declarat ca fiier funcie. O funcie difer de un script prin faptul c poate lucra cu argumente. Variabilele definite
i manipulate n interiorul fiierului funcie sunt localizate la nivelul acesteia. La terminarea execuiei unei funcii, n
memoria calculatorului, rmn doar variabilele de ieire ale acesteia. Aceste fiiere pot fi adugate ca funcii noi n
structura MATLAB [7]. Forma general a primei linii a unui fiier funcie este:
function [parametrii_iesire] = nume(parametrii_intrare)
cu urmtoarele semnificaii:
- function cuvnt cheie care declar fiierul ca fiier funcie (obligatoriu);
- nume numele funciei; reprezint numele sub care se salveaz fiierul *.m (extensia .m nu face parte
din nume); acest nume nu poate fi identic cu cel al unui fiier *.m deja existent;
- parametrii_iesire reprezint parametrii de ieire ai funciei; trebuie separai prin virgul i
cuprini ntre paranteze drepte; dac funcia nu are parametri de ieire, parantezele drepte i semnul egal
nu mai au sens;
- parametrii_intrare reprezint parametrii de intrare ai funciei; trebuie separai prin virgul i
cuprini ntre paranteze rotunde; dac funcia nu are parametri de intrare, parantezele rotunde i semnul
egal nu mai au sens.
O funcie 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);

Fiierul astfel scris se salveaz sub denumirea medie_aritm.m. Funcia definit anterior poate fi apelat din
linia de comand MATLAB, dintr-un script sau dintr-o alt funcie. De exemplu:
>> x = [1 2 3 4 5];
>> medie_aritm(x);
Media aritmetica a numerelor este: 3
A.1.9. Instruciuni de control logic
1. Instruciunea condiional if, clauza else, clauza elseif
Sintaxe:
if expresie_logica
grup_instructiuni
end % dac expresie_logica este adevrat, se execut grup_instructiuni dintre
% instruciunea if i instruciunea end;
% dac expresie_logica este fals, se trece la prima instruciune care urmeaz dup end;

if expresie_logica_1
grup_instructiuni_A
else
grup_instructiuni_B
end % dac expresie_logica_1 este adevrat, se execut grup_instructiuni_A dintre
% instruciunea if i clauza else;
% dac expresie_logica_1 este fals, se execut grup_instructiuni_B dintre clauza
% else i instruciunea end;

Dac funcia de calculat are mai multe nivele de instruciuni if-else, este dificil determinarea expresiei
logice adevarate, care selecteaz grupul de istruciuni ce urmeaz a fi executat. n acest caz se folosete 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 adevrat, se execut numai grup_instructiuni_A;
% dac expresie_logica_1 este fals i expresie_logica_2 este adevrat, se execut
% numai grup_instructiuni_B;
% dac expresie_logica_1 este fals i expresie_logica_2 este de asemenea fals, iar
Laboratorul 1: Introducere n MATLAB
12
% expresie_logica_3 este adevrat, se execut doar grup_instructiuni_C;
% dac mai multe expresii logice sunt adevrate, prima instruciune logic adevrat
% determin care grup de instruciuni este executat prima dat;
% dac toate expresiile logice sunt false, nu se execut nici un grup de instruciuni din
% structura if;
2. Instruciunea repetitiv for
Instruciunea for permite repetarea unui grup de instruciuni (din corpul buclei) de un anumit numr 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 parcurgnd intervalul de la initial la final cu pasul pas, se execut
% grup_instructiuni, care poate fi orice expresie MATLAB, de un numr de ori egal
% cu
final initial
1
pas
n
(
= +
(

, unde prin | | s-a notat valoarea ntreag a numrului;
La utilizarea buclei for trebuie respectate urmtoarele reguli [11]: indexul buclei for trebuie s fie o
variabil; dac expresia este o matrice goal, bucla nu se execut. Se va trece la urmtoare instruciune dup
instruciunea 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 numr de ori egal cu numrul elementelor din vector, de
fiecare dat indexul avnd valoarea egal cu urmtorul element din vector; dac expresia este o matrice, indexul va avea
la fiecare iteraie valorile coninute n urmtoarea coloan a matricii; la terminarea ciclurilor for, indexul are ultima
valoare utilizat.
3. Instruciunea repetitiv while
Instruciunea while este o structur care se folosete pentru repetarea unui set de instruciuni, att timp ct o
condiie specificat este adevrat.
Sintax:
while expresie
grup_instructiuni
end % dac expresie este adevrat se execut grup_instructiuni.
4. Instruciunea break
Instruciunea break se utilizeaz pentru a iei dintr-o bucl nainte ca aceasta s se fi terminat. Se recomand
utilizarea acesteia la detectarea unei condiii de eroare n interiorul buclei. Instruciunea break nceteaz execuia
ciclurilor for i while. n cazul unor cicluri imbricate, break comand ieirea din ciclul cel mai interior.
Sintax:
break
5. Operatori relaionali i operatori logici
n cadrul unui algoritm, de multe ori este necesar o selecie a grupului de instruciuni ce urmeaz a fi
executate, condiionat de valoarea de adevr a unei expresii. Instruciunile condiionale folosesc operatori relaionali i
operatori logici.
n MATLAB exist ase operatori relaionali utilizai pentru a compara dou matrici de dimensiuni egale (vezi
tabelul A.2).

Operatori relaionali Semnificaie
< mai mic
<= mai mic sau egal
> mai mare
>= mai mare sau egal
= = identic
~= diferit
Tabel A.2. Operatori relaionali n MATLAB
Operatorii relaionali compar dou matrici sau dou expresii matriceale, element cu element. Acetia
returneaz o matrice cu dimensiunea egal cu acea a matricilor care se compar, cu elementele
- 1 dac relaia este ADEVRAT;
- 0 dac relaia este FALS.
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 Semnificaie Prioritate
~ NU 1
& I 2
| SAU 3
Tabel A.3. Operatori logici n MATLAB
A.1.10. Reprezentri grafice
1. Reprezentri 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 funcie
% 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 funcie
% de partea real (pe abscis) i de partea imaginar (pe ordonat) a elementelor sale.
plot(M); % se vor reprezenta pe acelai 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 aceeai lungime i N este o matrice de aceeai dimensiune cu matricea M:
plot(x, y); % se vor reprezenta grafic elementele vectorului y n funcie 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 numrul de linii al matricii M, atunci se vor
% reprezenta pe acelai grafic coloanele matricii M n funcie de elementele vectorului x;
% dac lungimea vectorului x este egal cu numrul de coloane al matricii M atunci se vor
% reprezenta pe acelai grafic liniile matricii M n funcie 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 acelai grafic coloanele matricii N n funcie de coloanele matricii M
% (coloana k din matricea N va fi reprezentat funcie de coloana k din matricea M, unde
% k=1, 2, 3, , numr coloane);
% dac cele dou matrici nu au aceeai dimensiune, atunci reprezentarea nu este posibil.

Pentru reprezentarea mai multor grafice n aceeai fereastr, utiliznd o singur comand, folosim:
plot(x1, y1, x2, y2, ..., xn, yn);
% se vor reprezenta pe acelai grafic y1 n funcie de x1, y2 n funcie de x2, , yn n
% funcie de xn (pot fi vectori sau matrici);
% rmn valabile considerentele fcute n sintaxele anterioare, referitor la cazurile cnd avem
% vectori sau matrici;
% dac xi i yi (i=1, 2, ..., n), nu au aceeai 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 rou
- - ntrerupt o cerc g verde
: punctat * stelu b albastru
-. linie-punct . punct c cyan
x cruce m magenta
cross sau s ptrat y galben
diamond sau d romb k negru
^ triunghi orientat cu vrful n sus w alb
v triunghi orientat cu vrful n jos
> triunghi orientat cu vrful spre dreapta
< triunghi orientat cu vrful spre stnga
pentagram sau p stea cu cinci vrfuri
hexagram sau h stea cu ase vrfuri
Tabel A.4. Linii, markere i culori pentru reprezentarea grafic n MATLAB

Observaie: Funcia stem realizeaz o reprezentare n form discret a datelor. Vezi help stem.
Laboratorul 1: Introducere n MATLAB
14
2. Reprezentri grafice n coordinate logaritmice
Pentru acest tip de reprezentri se folosesc funciile loglog, semilogx i semilogy. Sintaxele rmn
aceleai ca la funcia plot, singura deosebire fiind modul de scalare al axelor. Astfel funcia loglog scaleaz ambele
axe (abscisa i ordonata) folosind logaritmul n baza 10, deci pe axe vom avea puteri ale lui 10. Funcia semilogx
realizeaz acelai tip de scalare ns numai pe abscis iar funcia semilogy procedeaz n acelai mod ns numai pe
ordonat.
3. Divizarea ferestrei grafice
Dac dorim ca fereastra grafic s conin mai multe reprezentri grafice se poate folosi funcia subplot
(mparte fereastra grafic n mai multe subferestre - n fiecare dintre acestea putnd fi plasat cte un grafic). Fereastra
grafic este privit astfel sub forma unei matrici cu m linii i n coloane, deci n total mxn subferestre [13]. Numrarea
acestor subferestre se face pe linii. Dac vrem s mprim 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 numrul
% fiecrei subferestre n matricea grafic respectiv (numrarea se face pe linii);
% sintaxa respectiv este urmat de comanda propriu- zis de afiare a graficului, care poate
% fi oricare din cele prezentate (stem, plot, loglog, semilogx, semilogy).
4. Schimbarea limitelor axelor
Dac se dorete vizualizarea numai a unei anumite poriuni dintr-un grafic, corespunztoare 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 reele 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 reea de linii, uurnd 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 reinem graficul curent i s adugm n aceeai fereastr grafic urmtoarele reprezentri
grafice se poate folosi funcia hold.
Sintaxe:
hold on; % reine graficul curent i adaug n aceeai fereastr grafic urmtoarele reprezentri
% grafice;
hold off; % dac se dorete n continuare reprezentarea n ferestre grafice separate (dezactiveaz
% comanda hold on).

Dac se dorete 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 numrul figurii respective. n caz
contrar, la sfritul execuiei programului va aprea numai ultima reprezentare grafic (se va folosi o singur fereastr
grafic ce va fi tears de fiecare dat la ntlnirea unei noi comenzi grafice).

S se reprezinte grafic funcia ( ) ( ) sin 2 0.2 f t t t = , cu culoarea albastr i linie-plus i ( ) ( ) 1 g t f t = cu
linie-stelu de culoare roie. 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 att funcia plot
(subfereastra 211), ct i funcia 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);
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');

Rulai scriptul fgPlot.m.

S-ar putea să vă placă și