Sunteți pe pagina 1din 36

Introducere �n MATLAB

�n cele ce urmeaza ne propunem sa revedem c�teva dintre comenzile MATLAB utile �n


prelucrarea numerica a
semnalelor. Programul MATLAB integreaza analiza numerica, calculul matriceal,
procesarea semnalelor, reprezentarile
grafice 2D si 3D, realizarea interfetelor grafice.

MATLAB (MATrix LABoratory) este un program interactiv, destinat prelucrarii


numerice a datelor furnizate
sub forma vectoriala sau matriceala. MATLAB-ul include .i aplicatii specifice,
str�nse �n TOOLBOX-uri. Acestea sunt
colectii extinse de functii MATLAB (fisiere *.m) care dezvolta mediul de programare
de la o versiune la alta, pentru a
rezolva probleme specifice.

1. Prezentarea utilitarului MATLAB

Partea de documentare, inclusa �n structura Help a produsului este aliniata


sistemului WINDOWS. Exista
posibilitati de cautare a explicatiilor at�t prin index, c�t si prin cuprins (grup
de functii � Table of Contents).

Programul MATLAB se lanseaza �n executie din mediul WINDOWS astfel: Start.All


Programs.MATLAB
R2012b

Selectia unei comenzi, din bara de comenzi sau din meniul principal, se poate face
cu mouse-ul sau cu
ajutorul sagetilor, prin deplasarea zonelor active sau prin tastarea literei
marcate �n fiecare subcomanda.

Dupa lansarea �n executie, programul MATLAB intra �n modul de comanda, afis�nd


prompterul �>>�, si
asteapta introducerea unei comenzi de catre utilizator. De exemplu, comanda:

>> var = 0:5

va crea variabila var afis�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 comanda prin folosirea


sagetilor de la tastatura, �.� si
�.� (cautarea se face ca �ntr-o �lista�).
�n afara modului de lucru �n linia de comanda, MATLAB-ul lucreaza cu programe
continute �n fisiere. Fisierele
ce contin instructiuni MATLAB se numesc fisiere M (*.m). Un program MATLAB poate fi
scris sub forma fisierelor script
sau a fisierelor function. Un fisier script este un fisier extern care contine o
secventa de comenzi MATLAB. Dupa
executia completa a unui fisier script, variabilele create de acest tip de fisier
ram�n �n zona de memorie a aplicatiei.
Daca prima linie a fisierului contine cuv�ntul �function�, fisierul respectiv este
fisier functie, care se caracterizeaza prin
faptul ca poate lucra cu argumente. La terminarea executiei unei functii, �n
memoria calculatorului nu ram�n dec�t
variabilele de iesire ale acesteia.

� Meniul principal

Pentru a deschide un fisier �n Editorul/Debugger-ul MATLAB-ului din meniul de


comanda se procedeaza
astfel:

1. Pentru un fisier nou, se selecteaza File.New.M-file (figura 2);


2. Pentru un fisier existent se selecteaza File.Open si apoi se selecteaza fisierul
dorit (figura 3).

Figura 2. Crearea unui fisier nou

Figura 3. Deschiderea unui fisier *.m existent

Din meniul principal se pot seta anumite proprietati, legate de formatul dorit la
afisare, fonturi .i optiuni de copiere.
Pentru aceasta se selecteaza File.Preferences.
MATLAB-ul lucreaza cu doua tipuri de ferestre: o fereastra de comenzi si una de
reprezentari grafice. La un moment
dat poate fi deschisa numai o fereastra de comenzi. Fereastra grafica este
utilizata �n reprezentarea grafica a datelor; pot fi
deschise mai multe ferestre grafice �n acelasi timp. Selectarea ferestrei grafice
se face �n modul urmator: File.New.Figure.
Pe monitor va apare o fereastra grafica ca �n figura 4.

Figura 4. Deschiderea unei noi ferestre grafice

2. Functii de control �n MATLAB

Mediul de programare MATLAB este sensibil la tipul de litere (mari sau mici), dar
exista comenzi care fac trecerea
�ntre modurile sensibil si nesensibil. Numele functie este obligatoriu sa fie scris
cu litere mici.

Liniile de comentariu dintr-un fisier script/functie sunt precedate de caracterul �


%�.

� help � furnizeaza informatii despre MATLAB si functiile acestuia;


� what � listeaza fisierele *.m, *.mat, *.mex din directorul curent;
� lookfor � listeaza toate numele de fisiere care au �n prima linie a help-ului
cuvintele mentionate ca argument,
precum si prima linie din help;
� path � returneaza caile cu care lucreaza MATLAB-ul, locul unde sunt cautate
fisierele apelate;
� who � listeaza variabilele curente din memorie;
� whos � furnizeaza informatii suplimentare referitoare la variabilele din spatiul
de lucru (nume, dimensiune, tip �
real sau complex);
� exist � verifica daca o variabila exista �n mediul MATLAB;
� format � stabileste formatul extern de afisare al numerelor pe ecran;

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

� clear � sterge din memorie una sau mai multe variabile.


� dir � afiseaza numele tuturor fisierelor din directorul curent sau din orice alt
director precizat ca argument;
� cd � returneaza numele directorului curent sau schimba directorul de lucru;

Un anumit program MATLAB, aflat �ntr-un anumit director, nu poate fi rulat dec�t
daca directorul respectiv este
directorul de lucru.

3. Fisiere MATLAB

Fisierele MATLAB *.m pot fi privite ca macro-uri ale comenzilor MATLAB salvate �n
fisiere cu extensia .m, adica
numefisier.m. Un fisier *.m poate fi o functie cu variabile de intrare si iesire
sau o lista de comenzi.

MATLAB-ul cere ca fisierele *.m sa fie salvate fie �n directorul de lucru, fie
�ntr-un director care este specificat �n lista
cailor din MATLAB. Pentru a putea accesa fisierul *.m dintr-un anumit director,
trebuie sa adaugam directorul/fisierul la calea
MATLAB. Acest lucru se realizeaza astfel: se apasa butonul Browse for folder, se
cauta directorul dorit, iar apoi se confirma cu
OK, ca �n figura 5.
Figura 5. Adaugarea directorului/fisierului dorit la calea MATLAB

Comanda addpath nume_director adauga directorul nume_director la calea curenta din


MATLAB. Aceasta comanda este
echivalenta cu procedura prezentata anterior de adaugare a unei noi cai.

Fisierele MATLAB pot utiliza variabile definite de utilizator, variabile definite


cu comanda input. Sa presupunem ca
dorim sa rulam un fisier MATLAB pentru diferite valori ale unei variabile N.
Atunci, �n fisierul MATLAB, se utilizeaza urmatoarea
comanda:

N = input(�N=�)

4. Definirea variabilelor

Variabilelor li se atribuie valori numerice, tiparindu-se direct expresia numerica.


Daca se tasteaza �n linia de comanda:

>> var1 = 1+2

vom obtine rezultatul:

var1 =

Rezultatul nu se afiseaza daca se pune punct si virgula la sf�rsitul expresiei, de


exemplu:

>> var1=1+2;

Unei variabile i se poate atribui o formula ce utilizeaza operatorii aritmetic


definiti �n MATLAB (vezi tabel 1), si una sau
mai multe marimi definite anterior chiar �n cadrul comenzii curente. De exemplu,
presupun�nd ca var1 este definita anterior:

>> var2 = var1^4

va returna valoarea:

var2=

81

�n MATLAB se utilizeaza urmatorii operatori aritmetici:


Simbol

Semnificatie

Adunare

Scadere

�nmultire

.*

�nmultire �ntre doua matrici (sau vectori) element cu element

�mpartire

./

�mpartire �ntre doua matrici (sau vectori) element cu element

Ridicare la putere

.^

Ridicare la putere a unei matrici (sau vector) element cu element

'

Transpunere si conjugare

.'

Transpunere

( )

Specificarea ordinii de evaluare a operatiilor

Tabel 1. Operatori aritmetici �n MATLAB

�n MATLAB exista variabile predefinite � acestea nu pot fi declarate si sunt


accesibile global �n orice fisier *.m. Aceste
variabile speciale sunt introduse �n mod obisnuit �n constructiile functiilor
MATLAB, ele return�nd valorile scalare utile. C�teva
dintre variabilele si constantele speciale sunt:

� ans � variabila creata automat �n care este returnat rezultatul unui calcul,
atunci c�nd expresia nu a avut asignat
un nume;

Daca se tasteaza direct �n fereastra de comanda:


>> 3

obtinem

ans = % nu s-a alocat nici un nume.

>> x = 2

x = % s-a alocat numele x.

� eps � variabila permanenta �n care este memorata eroarea relativa pentru


calculele efectuate �n virgula mobila.
Valoarea implicita este 2.2204e-016, dar poate fi redefinita la orice alta valoare;

� pi � variabila permanenta care are asignata valoarea ;


3.141592653589p=.
� i - variabila utilizata pentru introducerea numerelor complexe;
1=-
� j - alternativa pentru i;
1=-
� inf � variabila utilizata pentru reprezentarea lui �n aritmetica IEEE, rezultat
al �mpartirii ;
+8
1.00.0
� NaN � variabila folosita pentru reprezentarea lui Not-a-Number, �n aritmetica
IEEE, rezultat al �mpartirii
nedefinite .
0.00.0

Utilizatorul poate defini si alte variabile, cu ajutorul unor functii predefinite.

Se pot verifica urmatoarele exemple (tast�nd direct �n fereastra de comenzi):

p = pi; % nu se va afisa valoarea p (dar exista �n memorie).

q = pi/2 % va afisa valoarea q.

% r = pi/4 % nu se ia �n considerare aceasta linie.

v = r/2 % va rezulta o eroare deoarece nu �l cunoaste pe r.

s = 1+2+3+... enter % instructiunea se continua si pe linia urmatoare.

4+5+6

1. Operatii asupra numerelor complexe

� abs � valoarea absoluta (modulul);


� angle � faza;
� conj � valoarea complex conjugata;
� real � partea reala a unui numar complex;
� imag � partea imaginara a unui numar complex.

2. Functiile radical, exponentiala si logaritm

� sqrt � radical de ordinul 2 (radacina patrata);


� exp � exponetiala (puteri ale numarului
e);
� log � logaritm natural (logaritm �n baza
e);
� log2 � logaritm �n baza 2;
� log10 � logaritm zecimal (logaritm �n baza 10);
� pow2 � puteri ale lui 2.

3. Functiile trigonometrice directe si 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. Functiile hiperbolice directe si inverse

� sinh � sinus hiperbolic;


� cosh � cosinus hiperbolic;
� tanh � tangeta hiperbolica;
� coth � cotangenta hiperbolica;
� sech � secanta hiperbolica;
� csch � cosecanta hiperbolica.
� asinh � arcsinus hiperbolic;
� acosh � arccosinus hiperbolic;
� atanh � arctangenta hiperbolica;
� acoth � arcotangenta hiperbolica;
� asech � arcsecanta hiperbolica;
� acsch � arccosecanta hiperbolica.

Pentru informatii despre modul de utilizare al acestor functii folositi comanda


help �nsotita de numele functiei dorite.

5. Functii destinate analizei de date

Daca v este un vector si M este o matrice, atunci avem urmatoarele sintaxe:

sum(v); % calculeaza suma elementelor vectorului v;

prod(v); % calculeaza produsul elementelor vectorului v;

sum(M); % returneaza un vector linie av�nd ca elemente suma elementelor fiecarei


coloane din

% matricea M;

prod(M); % returneaza un vector linie av�nd ca elemente produsul elementelor


fiecarei coloane din

% matricea M.

max(v); % returneaza elementul maxim al vectorului v;

[m, p] = max(v); % returneaza elementul maxim al vectorului m si indicele


elementului maxim p;

% daca exista maxime multiple se returneaza indicele primului dintre ele;

min(v); % returneaza elementul minim al vectorului v;

[m, p] = min(v); % returneaza elementul minim al vectorului m si indicele


elementului minim p;

% daca exista minime multiple se returneaza indicele primului dintre ele;

max(M); % returneaza un vector linie av�nd ca elemente maximul elementelor din


fiecare coloana a

% matricii M;

[m, p] = max(M); % returneaza un vector linie m av�nd ca elemente maximul


elementelor din fiecare coloana a

% matricii M si un vector linie p ce contine pozitia maximului respectiv �n cadrul


fiecarei

% coloane.

min(M); % returneaza un vector linie av�nd ca elemente minimul elementelor din


fiecare coloana a
% matricii M;

[m, p] = min(M); % returneaza un vector linie m av�nd ca elemente minimul


elementelor din fiecare coloana a

% matricii M si un vector linie p ce contine pozitia minimului respectiv �n cadrul


fiecarei coloane.

mean(v); % calculeaza media aritmetica a elementelor vectorului v.

mean(M); % returneaza un vector linie av�nd ca elemente media aritmetica a


elementelor fiecarei

% coloane din matricea M.

5. Scalari, vectori si matrici

MATLAB este un pachet de programe care lucreaza numai cu un singur tip de obiecte,
matrici numerice rectangulare,
cu elemente reale sau complexe. �n acest sens, scalarii sunt asimilati matricilor
cu o linie si o coloana (
11�), iar vectorii sunt
asimilati matricilor cu o linie (
1n�) sau o coloana (
1n�).

Introducerea matricilor �n mediul de lucru se face prin una din metodele:


introducerea explicita a listei de elemente;
generarea prin instructiuni si functii; crearea de fisiere *.m; �ncarcarea din
fisiere de date externe.

Cea mai simpla metoda consta �n utilizarea unei liste explicite. Trebuie respectate
urmatoarele reguli: elementele unei
linii trebuie separate prin spatii libere sau virgula; liniile se separa prin
semnul punct-virgula �;�; elementele matricei sunt
cuprinse �ntre paranteze drepte �[ ]�.

Elementele matricilor pot fi numere reale sau complexe sau orice alta variabila
MATLAB. Elementele matricii A pot fi
identificate, �n MATLAB, prin notatia A(i, j) si semnifica elementul de la
intersectia 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
123456A
..
=..
..
si vectorii
()789B=,
12C-..
=..-..
.

>> 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 ); % reprezinta elementul din matricea M corespunzator liniei i si coloanei


j;

M(i); % reprezinta elementul i din matrice, numararea elementelor fac�ndu-se pe


coloane.

Pentru un vector v:

v(i); % reprezinta elementul de pe pozitia i din vector.

Pentru A, B si C definite anterior verificati:

>> A(1, 3)

ans =

>> A(2)

ans =

Daca dorim sa schimbam elementele unei matrici sau sa adaugam alte elemente, fara a
rescrie �ntreaga matrice, se
procedeaza astfel:

>> A(1, 3) = 0

A =

1 2 0

4 5 6

>> A(3, 3) = -2
A =

1 2 0

4 5 6

0 0 -2

>> C(3) = 1

C =

-1

-2

Se pot construi matrici de dimensiuni mai mari pornind de la matrici de dimensiuni


mai reduse. Pentru exemplificare,
vom folosi matricea A si vectorii B si C �n ultima lor forma (A �
33�, B � , C � ):
13�
31�

>> D = [A; B]

D =

1 2 0

4 5 6

0 0 -2

7 8 9 % s-a construit matricea D de dimensiune


43�, prin adaugarea vectorului B la matricea A

% (ca ultima linie);

% A si B au acelasi numar de coloane (3) pentru a fi posibila constructia.

>> E = [A, C]

E =

1 2 0 -1

4 5 6 -2

0 0 -2 1

% s-a construit matricea E de dimensiune


34�, prin adaugarea vectorului C la matricea A

% (ca ultima coloana);


% A si C au acelasi numar de linii (3) pentru a fi posibila constructia.

Daca v este un vector si M este o matrice, atunci avem urmatoarele sintaxe:

v(i:k); % selecteaza elementele de pe pozitiile i, i+1, i+2, ..., k ale vectorului


v;

% daca i>k, atunci vectorul rezultat este gol (nu are nici un element);

v(i:j:k); % selecteaza elementele de pe pozitiile i, i+j, i+2j, ..., k ale


vectorului v (selecteaza cu

% pasul j);

% daca j>0 si i>k sau j>0 si i<k, atunci vectorul rezultat este gol;

v([i, j, k]); % selecteaza elementele de pe pozitiile i, j, k;

v(:); % daca vectorul este linie atunci el devine coloana;

% daca vectorul este coloana atunci el ram�ne nemodificat.

M(:, j); % selecteaza coloana j a matricii M;


M(i, :); % selecteaza linia i a matricii M;

M(:, i:j); % selecteaza coloanele de la i la j ale matricii M;

M(i:j, :); % selecteaza liniile de la i la j ale matricii M;

M(:, i:j:k); % selecteaza coloanele i, i+j, i+2j, ..., k ale matricii M (selecteaza
cu pasul j);

M(i:j:k, :); % selecteaza liniile i, i+j, i+2j, ..., k ale matricii M;

M(i:j, k:l); % extrage submatricea formata cu elementele aflate la intersectia


liniilor de la i la j si

% coloanelor de la k la l ale matricii M;

M(:, [i, j, k]); % selecteaza coloanele i, j, k ale matricii M;

M([i, j, k], :); % selecteaza liniile i, j, k ale matricii M;

M([i, j, k], [l, m, n]); % extrage submatricea formata cu elementele aflate la


intersectia liniilor i, j, k si

% coloanelor l, m, n ale matricii M;

M(:, :); % selecteaza �ntreaga matrice M;

M(i:j); % selecteaza elementele de i la j ale matricii M si le pune sub forma unui


vector linie

% (elementele �ntr-o matrice se numara pe coloane);

M(:); % selecteaza toate elementele matricii M si le pune sub forma unui vector
coloana (pune

% coloanele matricii M una sub alta,sub forma unui vector coloana).

Verificati sintaxele de mai sus folosind matricea A si vectorii B si C din


exemplele anterioare sau construind alte matrici si
vectori.

6. Vectori si matrici uzuale

1. Generarea vectorilor cu pas liniar

Sintaxe:

v = initial:pas:final; % se genereaza un vector linie v cu elementele �ncep�nd de


la initial la final,

% cu pasul egal cu pas (pasul poate fi si negativ dar atunci valoarea initiala
trebuie sa fie mai

% mare dec�t valoarea finala);

v = initial:final; % se genereaza 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 genereaza un vector linie v cu elementele �ncep�nd de la minim la maxim, cu


pas

% constant si av�nd un numar de elemente egal cu numar_de_elemente.

Verificati componenta 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. Matricea goala

Sintaxa:

x = [] % genereaza o matrice goala (fara nici un element).

>> x = []

x =

[]

3. Matricea unitate

Sintaxe:

ones(n); % returneaza o matrice de dimensiune nxn cu toate elementele egale cu 1;


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

ones(size(M)); % returneaza o matrice de dimensiunea matricii M cu toate elementele


egale cu 1.

Verificati continutul urmatoarele matrici:

>> ones(2)

ans =

1 1
1 1

ones(1, 4)

ones(3, 2)

ones(size(D)) % unde D este matricea definita anterior.

4. Matricea zero

Sintaxe:

zeros(n); % returneaza o matrice de dimensiune nxn cu toate elementele egale cu 0;

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


0.

zeros(size(M)); % returneaza o matrice de dimensiunea matricii M cu toate


elementele egale cu 0.

Verificati daca urmatoarele matrici au toate elementele nule:

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 definita anterior.

5. Matricea diagonala

Daca v este un vector (linie sau coloana) si M este o matrice, atunci avem
urmatoarele sintaxe:

diag(v); % returneaza o matrice patrata diagonala, cu elementele vectorului v pe


diagonala principala;

diag(v, k); % returneaza o matrice patrata cu elementele vectorului v pe diagonala


k deasupra celei

% principale, daca k>0, sau sub cea principala daca k<0;


% restul elementelor sunt 0.

diag(M); % returneaza un vector coloana ce contine elementele de pe diagonala


principala a matricii M;

diag(M, k); % returneaza un vector coloana ce contine elementele din matricea M de


pe diagonala k

% deasupra celei principale, daca k>0, sau sub cea principala, daca k<0.

Se va defini un vector linie a si o matrice A:

>> a = randn(1, 4);

>> A = randn(4);

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

7. Construirea unei functii

Daca prima linie a unui fisier MATLAB (*.m) contine la �nceput cuv�ntul function,
atunci fisierul respectiv este declarat
ca fisier functie. O functie difera de un script prin faptul ca poate lucra cu
argumente. Variabilele definite si manipulate �n
interiorul fisierului functie sunt localizate la nivelul acesteia. La terminarea
executiei unei functii, �n memoria calculatorului,
ram�n doar variabilele de iesire ale acesteia. Aceste fisiere pot fi adaugate ca
functii noi �n structura MATLAB. Forma generala a
primei linii a unui fisier functie este:

function [parametrii_iesire] = nume(parametrii_intrare)


cu urmatoarele semnificatii:

� function � cuv�nt cheie care declara fisierul ca fisier functie (obligatoriu);


� nume � numele functiei; reprezinta numele sub care se salveaza fisierul *.m
(extensia .m nu face parte din nume);
acest nume nu poate fi identic cu cel al unui fisier *.m deja existent;
� parametrii_iesire � reprezinta parametrii de iesire ai functiei; trebuie separati
prin virgula si cuprinsi �ntre
paranteze drepte; daca functia nu are parametri de iesire, parantezele drepte si
semnul egal nu mai au sens;
� parametrii_intrare � reprezinta parametrii de intrare ai functiei; trebuie
separati prin virgula si cuprinsi �ntre
paranteze rotunde; daca functia nu are parametri de intrare, parantezele rotunde si
semnul egal nu mai au sens.
Exerci.iu: Realiza.i o func.ie care calculeaza media aritmetica a elementelor unui
vector. Apela.i aceasta func.e din linia de
comanda.

9. Instructiuni de control logic

1. Instructiunea conditionala �if�, clauza �else�, clauza �elseif�

Sintaxe:

if expresie_logica

grup_instructiuni

end % daca expresie_logica este adevarata, se executa grup_instructiuni dintre

% instructiunea if si instructiunea end;

% daca expresie_logica este falsa, se trece la prima instructiune care urmeaza dupa
end;

if expresie_logica_1

grup_instructiuni_A

else

grup_instructiuni_B

end % daca expresie_logica_1 este adevarata, se executa grup_instructiuni_A dintre

% instructiunea if si clauza else;

% daca expresie_logica_1 este falsa, se executa grup_instructiuni_B dintre clauza

% else si instructiunea end;

Daca functia de calculat are mai multe nivele de instructiuni if-else, este
dificila determinarea expresiei logice
adevarate, care selecteaza grupul de istructiuni ce urmeaza a fi executat. �n acest
caz se foloseste clauza elseif.

Sintaxa:

if expresie_logica_1

grup_instructiuni_A

elseif expresie_logica_2

grup_instructiuni_B
elseif expresie_logica_3

grup_instructiuni_C

end % daca expresie_logica_1 este adevarata, se executa numai grup_instructiuni_A;

% daca expresie_logica_1 este falsa si expresie_logica_2 este adevarata, se executa

% numai grup_instructiuni_B;

% daca expresie_logica_1 este falsa si expresie_logica_2 este de asemenea falsa,


iar

% expresie_logica_3 este adevarata, se executa doar grup_instructiuni_C;

% daca mai multe expresii logice sunt adevarate, prima instructiune logica
adevarata

% determina care grup de instructiuni este executat prima data;

% daca toate expresiile logice sunt false, nu se executa nici un grup de


instructiuni din

% structura if;

2. Instructiunea repetitiva �for�

Instructiunea for permite repetarea unui grup de instructiuni (din corpul buclei)
de un anumit numar de ori.

Sintaxa:

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 (daca este omis se considera 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


executa

% grup_instructiuni, care poate fi orice expresie MATLAB, de un numar de ori egal

% cu , unde prin s-a notat valoarea �ntreaga a numarului;


finalinitial1pasn
..-
=+..
..
[]
La utilizarea buclei for trebuie respectate urmatoarele reguli: indexul buclei for
trebuie sa fie o variabila; daca expresia
este o matrice goala, bucla nu se executa. Se va trece la urmatoare instructiune
dupa instructiunea end; daca expresia este un
scalar, bucla se executa o singura data, cu indexul dat de valoarea scalarului;
daca expresia este un vector linie, bucla se
executa de un numar de ori egal cu numarul elementelor din vector, de fiecare data
indexul av�nd valoarea egala cu urmatorul
element din vector; daca expresia este o matrice, indexul va avea la fiecare
iteratie valorile continute �n urmatoarea coloana a
matricii; la terminarea ciclurilor for, indexul are ultima valoare utilizata.
3. Instructiunea repetitiva �while�

Instructiunea while este o structura care se foloseste pentru repetarea unui set
de instructiuni, at�t timp c�t o conditie
specificata este adevarata.

Sintaxa:

while expresie

grup_instructiuni

end % daca expresie este adevarata se executa grup_instructiuni.

4. Instructiunea �break�

Instructiunea break se utilizeaza pentru a iesi dintr-o bucla �nainte ca aceasta sa


se fi terminat. Se recomanda utilizarea
acesteia la detectarea unei conditii de eroare �n interiorul buclei. Instructiunea
break �nceteaza executia ciclurilor for si while. �n
cazul unor cicluri imbricate, break comanda iesirea din ciclul cel mai interior.

Sintaxa:

break

5. Operatori relationali si operatori logici

�n cadrul unui algoritm, de multe ori este necesara o selectie a grupului de


instructiuni ce urmeaza a fi executate,
conditionata de valoarea de adevar a unei expresii. Instructiunile conditionale
folosesc operatori relationali si operatori logici.

�n MATLAB exista sase operatori relationali utilizati pentru a compara doua matrici
de dimensiuni egale (vezi tabelul
2).

Operatori relationali

Semnificatie

<

mai mic

<=

mai mic sau egal

>

mai mare

>=

mai mare sau egal


= =

identic

~=

diferit

Tabel 2. Operatori relationali �n MATLAB

Operatorii relationali compara doua matrici sau doua expresii matriceale, element
cu element. Acestia returneaza o
matrice cu dimensiunea egala cu acea a matricilor care se compara, cu elementele

� 1 � daca relatia este ADEVARATA;


� 0 � daca relatia este FALSA.

Pentru combinarea a doua sau mai multor expresii logice se folosesc operatorii
logici din tabelul 3.

Operatori logici

Semnificatie

Prioritate

NU

&

SI

SAU

Tabel 3. Operatori logici �n MATLAB

9. Reprezentari grafice

1. Reprezentari grafice �n coordonate liniare

Sintaxe:
Daca v este un vector si M este o matrice:

plot(v); % daca v este un vector cu elemente reale, se vor reprezenta grafic


elementele sale �n functie

% de indici (primul indice este 1, ultimul indice este egal cu lungimea


vectorului);

% daca v este un vector cu elemente complexe, atunci reprezentarea sa se va face �n


functie

% de partea reala (pe abscisa) si de partea imaginara (pe ordonata) a elementelor


sale.

plot(M); % se vor reprezenta pe acelasi grafic coloanele matricii M (fiecare din


coloanele matricii este

% privita ca un vector si reprezentat ca �n sintaxa precedenta).

Daca x si y sunt doi vectori de aceeasi lungime si N este o matrice de aceeasi


dimensiune cu matricea M:

plot(x, y); % se vor reprezenta grafic elementele vectorului y �n functie de


elementele vectorului x;

% daca lungimea vectorului x nu este egala cu lungimea vectorului y reprezentarea


nu este

% posibila.

plot(x, M); % daca lungimea vectorului x este egala cu numarul de linii al matricii
M, atunci se vor

% reprezenta pe acelasi grafic coloanele matricii M �n functie de elementele


vectorului x;

% daca lungimea vectorului x este egal cu numarul de coloane al matricii M atunci


se vor

% reprezenta pe acelasi grafic liniile matricii M �n functie de elementele


vectorului x;

% daca lungimea vectorului x nu este egala cu una dintre dimensiunile matricii M,


atunci
% reprezentarea nu este posibila.

plot(M, N); % se vor reprezenta pe acelasi grafic coloanele matricii N �n functie


de coloanele matricii M

% (coloana k din matricea N va fi reprezentata functie de coloana k din matricea M,


unde

% k=1, 2, 3, �, numar coloane);

% daca cele doua matrici nu au aceeasi dimensiune, atunci reprezentarea nu este


posibila.

Pentru reprezentarea mai multor grafice �n aceeasi fereastra, utiliz�nd o singura


comanda, folosim:

plot(x1, y1, x2, y2, ..., xn, yn);

% se vor reprezenta pe acelasi grafic y1 �n functie de x1, y2 �n functie de x2, �,


yn �n

% functie de xn (pot fi vectori sau matrici);

% ram�n valabile considerentele facute �n sintaxele anterioare, referitor la


cazurile c�nd avem

% vectori sau matrici;

% daca xi si yi (i=1, 2, ..., n), nu au aceeasi dimensiune, atunci reprezentarea nu


este

% posibila.

Se pot folosi diverse linii, markere si culori pentru reprezentarea graficelor


(vezi tabelul 4).

Tip linie

Tip marker

Culoare

continua

plus

rosu
- -

�ntrerupta

cerc

verde

punctata

steluta

albastru

-.

linie-punct

punct

cyan

cruce

magenta

�cross� sau s

patrat

galben
�diamond� sau d

romb

negru

triunghi orientat cu v�rful �n sus

alb

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 sase v�rfuri

Tabel 4. Linii, markere si culori pentru reprezentarea grafica �n MATLAB

Observatie: Functia stem realizeaza o reprezentare �n forma discreta a datelor.


Vezi help stem.

2. Divizarea ferestrei grafice

Daca dorim ca fereastra grafica sa contina mai multe reprezentari grafice se poate
folosi functia subplot (�mparte
fereastra grafica �n mai multe �subferestre� - �n fiecare dintre acestea put�nd fi
plasat c�te un grafic). Fereastra grafica este
privita astfel sub forma unei matrici cu m linii si n coloane, deci �n total mxn
�subferestre� [13]. Numararea acestor �subferestre�
se face pe linii. Daca vrem sa �mpartim fereastra grafica �n
339�= �subferestre� vom avea:

7
8

Sintaxa:

subplot(m, n, p); % �mparte fereastra grafica �ntr-o matrice mxn (mxn


�subferestre�) iar p reprezinta numarul

% fiecarei �subferestre� �n matricea grafica respectiva (numararea se face pe


linii);

% sintaxa respectiva este urmata de comanda propriu- zisa de afisare a graficului,


care poate

% fi oricare din cele prezentate (stem, plot, loglog, semilogx, semilogy).

3. Schimbarea limitelor axelor

Daca se doreste vizualizarea numai a unei anumite portiuni dintr-un grafic,


corespunzatoare unor anumite intervale
pe abscisa si ordonata, se va folosi comanda axis.

Sintaxa:

axis([x0 x1 y0 y1]);% pe abscisa se va vizualiza �ntre valorile x0 si x1, iar pe


ordonata �ntre y0 si y1;

% aceasta sintaxa se plaseaza dupa comanda de reprezentare grafica.

4. Precizarea titlului graficului si a etichetelor axelor. Trasarea unei retele pe


grafic. Plasarea unui text pe grafic

Sintaxe:

title(�text�); % plaseaza deasupra graficului, ca titlu, textul text;

xlabel(�text�); % textul text devine eticheta de pe abscisa;

ylabel(�text�); % textul text devine eticheta de pe ordonata.

grid; % traseaza pe grafic o retea de linii, usur�nd astfel citirea graficului;

gtext(�text�); % plaseaza pe grafic textul text (folosind mouse-ul).

Toate aceste sintaxe urmeaza dupa comanda de reprezentare grafica.


5. Suprapunerea succesiva a graficelor

Daca dorim sa retinem graficul curent si sa adaugam �n aceeasi fereastra grafica


urmatoarele reprezentari grafice se
poate folosi functia hold.

Sintaxe:

hold on; % retine graficul curent si adauga �n aceeasi fereastra grafica


urmatoarele reprezentari grafice;

hold off; % daca se doreste �n continuare reprezentarea �n ferestre grafice


separate (dezactiveaza comanda hold on).

Daca se doreste �n cadrul unui program reprezentarea mai multor grafice �n ferestre
separate, fiecare comanda grafica
va trebui sa fie precedata de un nume de forma figure(n), unde n este numarul
figurii respective. �n caz contrar, la sf�rsitul
executiei programului va aparea numai ultima reprezentare grafica (se va folosi o
singura fereastra grafica ce va fi �stearsa� de
fiecare data la �nt�lnirea unei noi comenzi grafice).

Exerci.iu: Sa se reprezinte grafic functia


()()sin20.2fttp=, cu culoarea albastra si linie-plus si
()()1gtft=- cu linie-steluta
de culoare rosie. Sa se scrie titlul �f(t) = sin(2 \pi 0.2 t) si g(t) = 1 - f(t)�
pe axa
x sa se scrie �timp�, iar pe axa
y sa se scrie
�Amplitudine�. Pentru reprezentarea grafica se vor folosi at�t functia plot
(subfereastra 211), c�t si functia 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);

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

10. Interfe.e grafice

MATLAB ofera posibilitatea de a realiza interfe.e grafice, prin intermediul


utilitarului GUIDE (graphic user interface
development environment). Utilitarul se lanseaza �n execu.ie cu comanda

>> guide

Fereastra principala va arata ca �n figura 6.

Figura 6. Utilitarul GUIDE pentru editarea interfe.elor grafice


Sunt predefinite 4 tipuri de interfe.e grafice: interfa.a fara elemente implicite
(blank), interfa.a cu elemente de
control (Uicontrols), interfa.a cu sistem de axe .i meniuri (axes and menus),
interfa.a cu ferestre de dialog (modal question
dialog). De asemenea, se pot deschide .i edita interfe.e existente. Toate
interfe.ele vor fi salvate �n mod automat cu extensia
.fig.

Exerci.iu: Se va crea o intefa.a grafica, care sa afi.eze un semnal sinusoidal,


amplitudine .i frecven.a introduse manual.