Sunteți pe pagina 1din 12

Sisteme inteligente de suport decizonal Proiect 5

Introducere n MATLAB

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.
MATLAB (MATrix LABoratory) este un program interactiv, destinat prelucrrii numerice a datelor furnizate
sub form vectorial sau matriceal. MATLAB-ul include i 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.

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

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

astfel:
1.
2.

Meniul principal

Pentru a deschide un fiier n Editorul/Debugger-ul MATLAB-ului din meniul de comand se procedeaz


Pentru un fiier nou, se selecteaz FileNewM-file (figura 2);
Pentru un fiier existent se selecteaz FileOpen i apoi se selecteaz fiierul dorit (figura 3).

Figura 2. Crearea unui fiier nou

Figura 3. Deschiderea unui fiier *.m existent

Din meniul principal se pot seta anumite proprieti, legate de formatul dorit la afiare, fonturi i opiuni de copiere.
Pentru aceasta se selecteaz FilePreferences.
1

Sisteme inteligente de suport decizonal Proiect 5

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

Figura 4. Deschiderea unei noi ferestre grafice

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

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

Sisteme inteligente de suport decizonal Proiect 5

Figura 5.

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

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


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

Sisteme inteligente de suport decizonal Proiect 5


>> 3

obinem
ans =
3
>> x = 2
x=
2

% nu s-a alocat nici un nume.


% s-a alocat numele x.

eps variabil permanent n care este memorat eroarea relativ pentru calculele efectuate n virgul mobil.
Valoarea implicit este 2.2204e-016, dar poate fi redefinit la orice alt valoare;
pi variabil permanent care are asignat valoarea = 3.141592653589 ;
i=

1 - variabil utilizat pentru introducerea numerelor complexe;


j=
1 - alternativ pentru i;
inf variabil utilizat pentru reprezentarea lui + n aritmetica IEEE, rezultat al 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.
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

2.

Funciile radical, exponenial i logaritm

3.

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.

Funciile trigonometrice directe i inverse

4.

abs valoarea absolut (modulul);


angle faza;
conj valoarea complex conjugat;
real partea real a unui numr complex;
imag partea imaginar a unui numr complex.

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.

Funciile hiperbolice directe i inverse

sinh sinus hiperbolic;


cosh cosinus hiperbolic;
tanh tanget hiperbolic;
coth cotangent hiperbolic;
sech secant hiperbolic;
csch cosecant hiperbolic.

Sisteme inteligente de suport decizonal Proiect 5

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:


% calculeaz suma elementelor vectorului v;
% calculeaz produsul elementelor vectorului v;
% 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;
% 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.
sum(v);
prod(v);
sum(M);

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 ( n 1 ).
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.
1 2 3
1
Fie matricea A =
i vectorii B = ( 7 8 9 ) , C = .
4
5
6

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

Sisteme inteligente de suport decizonal Proiect 5


B=
7 8 9
>> C = [-1; -2]
C=
-1
-2

Sintaxe:
M(i, j );
M(i);
v(i);
>> A(1, 3)
ans =
3
>> A(2)
ans =
4

Pentru o matrice M:
% reprezint elementul din matricea M corespunztor liniei i i coloanei j;
% reprezint elementul i din matrice, numrarea elementelor fcndu-se pe coloane.
Pentru un vector v:
% reprezint elementul de pe poziia i din vector.
Pentru A, B i C definite anterior verificai:

Dac dorim s schimbm elementele unei matrici sau s adugm alte elemente, fr a rescrie ntreaga matrice, se
procedeaz astfel:
>> A(1, 3) = 0
A=
1 2 0
4 5 6
>> A(3, 3) = -2
A=
1 2 0
4 5 6
0 0 -2
>> C(3) = 1
C=
-1
-2
1

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

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

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

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


% 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;
v(i:k);

Sisteme inteligente de suport decizonal Proiect 5

% selecteaz linia i a matricii M;


% selecteaz coloanele de la i la j ale matricii M;
% selecteaz liniile de la i la j ale matricii M;
% selecteaz coloanele i, i+j, i+2j, ..., k ale matricii M (selecteaz cu pasul j);
% selecteaz liniile i, i+j, i+2j, ..., k ale matricii M;
% 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).
M(i, :);
M(:, i:j);
M(i:j, :);
M(:, i:j:k);
M(i:j:k, :);
M(i:j, k:l);

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

6. Vectori i matrici uzuale


1.

Generarea vectorilor cu pas liniar

Sintaxe:

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
>> l = linspace(4, 16, 4)
l=
4 8 12 16
>> q = linspace(pi, -pi, 3)

2.

Matricea goal

Sintax:

% genereaz o matrice goal (fr nici un element).

x = []
>> x = []
x=
[]

3.

Matricea unitate

Sintaxe:
ones(n);
ones(m, n);
ones(size(M));

% returneaz o matrice de dimensiune nxn cu toate elementele egale cu 1;


% returneaz o matrice de dimensiune mxn cu toate elementele egale cu 1.
% returneaz o matrice de dimensiunea matricii M cu toate elementele egale cu 1.

Verificai coninutul urmtoarele matrici:

>> ones(2)
ans =
1 1

Sisteme inteligente de suport decizonal Proiect 5


1 1
ones(1, 4)
ones(3, 2)
ones(size(D))

4.

% unde D este matricea definit anterior.

Matricea zero

Sintaxe:
zeros(n);
zeros(m, n);
zeros(size(M));

% returneaz o matrice de dimensiune nxn cu toate elementele egale cu 0;


% returneaz o matrice de dimensiune mxn cu toate elementele egale cu 0.
% returneaz o matrice de dimensiunea matricii M cu toate elementele egale cu 0.

Verificai dac urmtoarele 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))

5.

% unde D este matricea definit anterior.

Matricea diagonal

Dac v este un vector (linie sau coloan) i M este o matrice, atunci avem urmtoarele sintaxe:
% returneaz o matrice ptrat diagonal, cu elementele vectorului v pe diagonala principal;
% 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.
diag(v);
diag(v, k);

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

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

Sisteme inteligente de suport decizonal Proiect 5

Exerciiu: Realizai o funcie care calculeaz media aritmetic a elementelor unui vector. Apelai aceast funce din linia de
comand.

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

Sintax:

Instruciunea for permite repetarea unui grup de instruciuni (din corpul buclei) de un anumit numr de ori.

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

final initial
% cu n
=
+ 1 , unde prin [ ] s-a notat valoarea ntreag a numrului;
pas

La utilizarea buclei for trebuie respectate urmtoarele reguli: 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.

10

Sisteme inteligente de suport decizonal Proiect 5


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

4.

% dac expresie este adevrat se execut grup_instructiuni.

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
2).
Operatori relaionali

Semnificaie
<
mai mic
<=
mai mic sau egal
>
mai mare
>=
mai mare sau egal
==
identic
~=
diferit
Tabel 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.
Pentru combinarea a dou sau mai multor expresii logice se folosesc operatorii logici din tabelul 3.
Operatori logici

Semnificaie Prioritate
~
NU
1
&
I
2
|
SAU
3
Tabel 3. Operatori logici n MATLAB

9. Reprezentri grafice
1.

Reprezentri grafice n coordonate liniare

Sintaxe:

Dac v este un vector i M este o matrice:


% 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).
plot(v);

Dac x i y sunt doi vectori de aceeai lungime i N este o matrice de aceeai dimensiune cu matricea M:
% 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
plot(x, y);

11

Sisteme inteligente de suport decizonal Proiect 5

% reprezentarea nu este posibil.


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

plot(M, N);

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

-:
-.

Tip linie
continu
ntrerupt
punctat
linie-punct

Tip marker
Culoare
r rou
plus
g verde
cerc
b albastru
stelu
c cyan
punct
m magenta
cruce
y galben
ptrat
k negru
romb
w alb
triunghi orientat cu vrful n sus
triunghi orientat cu vrful n jos
triunghi orientat cu vrful spre dreapta
triunghi orientat cu vrful spre stnga
stea cu cinci vrfuri
stea cu ase vrfuri
Tabel 4. Linii, markere i culori pentru reprezentarea grafic n MATLAB
+
o
*
.
x
cross sau s
diamond sau d
^
v
>
<
pentagram sau p
hexagram sau h

Observaie: Funcia stem realizeaz o reprezentare n form discret a datelor. Vezi help stem.
2.

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

Sintax:
subplot(m, n, p);

3.

2
5
8

3
6
9

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

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

Precizarea titlului graficului i a etichetelor axelor. Trasarea unei reele pe grafic. Plasarea unui text pe grafic

Sintaxe:
title(text);
xlabel(text);
ylabel(text);
grid;
gtext(text);

% plaseaz deasupra graficului, ca titlu, textul text;


% textul text devine eticheta de pe abscis;
% textul text devine eticheta de pe ordonat.
% traseaz pe grafic o reea de linii, uurnd astfel citirea graficului;
% plaseaz pe grafic textul text (folosind mouse-ul).

Toate aceste sintaxe urmeaz dup comanda de reprezentare grafic.

12

Sisteme inteligente de suport decizonal Proiect 5


5.

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).
Exerciiu: S se reprezinte grafic funcia f ( t ) = sin ( 2 0.2t ) , cu culoarea albastr i linie-plus i g ( t ) = 1 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);
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. Interfee grafice


MATLAB ofer posibilitatea de a realiza interfee grafice, prin intermediul utilitarului GUIDE (graphic user interface
development environment). Utilitarul se lanseaz n execuie cu comanda
>> guide
Fereastra principal va arta ca n figura 6.

Figura 6. Utilitarul GUIDE pentru editarea interfeelor grafice


Sunt predefinite 4 tipuri de interfee grafice: interfa fr elemente implicite (blank), interfa cu elemente de
control (Uicontrols), interfa cu sistem de axe i meniuri (axes and menus), interfa cu ferestre de dialog (modal question
dialog). De asemenea, se pot deschide i edita interfee existente. Toate interfeele vor fi salvate n mod automat cu extensia
.fig.
Exerciiu: Se va crea o intefa grafic, care s afieze un semnal sinusoidal, amplitudine i frecven introduse manual.

13

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