Sunteți pe pagina 1din 12

APLICAIA NR.

1
Introducere n MATLAB

1. Generaliti
n cadrul acestei lucrri toate referinele au n vedere MATLAB versiunea
5.3.0 (R11), 21.01.1999.
Matlab [1], [2] reprezint un mediu de programare destinat calculului numeric
i reprezentrilor grafice n domeniul tiinei i ingineriei. Elementul de baz cu care
opereaz MATLAB este matricea. Este uor de extins, prin faptul c orice utilizator
poate aduga propriile funcii sau le poate modifica pe cele existente. Folosind
funciile predefinite ale MATLAB-ului se obine o important economie de timp n
crearea de noi aplicaii. Deasemenea pachetul software include un set de funcii
specifice (denumite toolbox) anumitor domenii, ca de exemplu:
-

Reele neuronale (Neural Networks);

Logic fuzzy (Fuzzy Logic)

Prelucrri de imagine (Image Processing);

Prelucrri de semnal (Signal Processing);

Undioare (Wavelet)

Achiziie de date (Data Aqusition);

Statistic (Statistics);

Identificarea sistemelor (System Identification);

Financiar (Financial).
Exist posibilitatea modelarii, analizei i simularii sistemelor dinamice, prin

descrierea acestora la nivel de schem bloc prin intermediul mediului Simulink. n

- 8 - Aplicaia nr. 1
acest categorie pot fi incluse, de exemplu, sisteme cu procesoare numerice de semnal
(DSP Blockset) sau sisteme bazate pe circuite electonice de putere (Power System
Blockset).
Adugnd la cele de mai sus i numeroasele posibiliti de reprezentare
grafic 2 sau 3D a datelor i posibilitatea interfarii codului MATLAB cu cel scris n
C sau limbaj de asamblare pentru procesoarele de semnal, avem argumentele
necesare care s justifice implementarea aplicaiilor cu reele neuronale prin
intermediul MATLAB.
Se ofer n continuare noiuni MATLAB elementare [3], necesare unei bune
nelegeri ale aplicaiilor prezentate n capitolele urmtoare.
2. Elemente de baz MATLAB
2.1 Linia de comand
Se folosete de regul pentru lansarea n execuie a programelor sau pentru
diverse comenzi MATLAB. Un program MATLAB se apleleaz tastnd n linia de
comand numele fiierului. O condiie necesar rulrii programului este setarea cii n
care acesta se gsete (din meniul principal, opiunea File, submeniu Set path). n
modul linie de comand fiecare linie este prelucrat imediat i rezultatele sunt afiate.
Linia de comand nu este recomandat pentru scrierea fiierelor MATLAB.
2.2 Crearea programelor MATLAB (fiierelor script i fiiere funcie)
Un program MATLAB, caracterizat de extensia *.m, const dintr-o
succesiune de instruciuni MATLAB, cu posibilitatea apelrii altor fiiere. El
presupune mai multe linii de cod care se pot scrie apelnd editorul MATLAB implicit.
Acesta se lanseaz prin comanda Edit.
Un fiier script conine o secven de comenzi. Dac prima linie a fiierului

Introducere n MATLAB - 9 conine cuvntul function, fiierul respectiv este declarat ca fiier funcie. O funcie
difer de un script prin faptul c poate lucra cu argumente.
Editorul ofer i faciliti de depanare (debugging) a programului prin
setarea unor puncte de oprire (breakpoints) i rularea pas cu pas a programului.
Exemplul 1.1 Scriei o funcie denumit suma care s preia drept argument dou
variabile i s returneze suma acestora.
Se apeleaz editorul prin comanda edit (fig.1.1).

Fig.1.1 Lansarea editorului pentru fiiere MAT:AB de tip *.m.

n urma acestei comenzi se poate introduce codul MATLAB aferent funciei


suma (fig.1.2). Dup salvarea fiierului (File, Save As, suma.m) se poate
apela din linia de comand nou funcie definit (fig.1.3).
2.3 Operaii cu matrici
!"

Definirea unei constante. Exemplu: x = 2

!"

Definirea unui vector. Exemplu: y = [1 2 3 4 5]

- 10 - Aplicaia nr. 1

Fig.1.2 Editorul/debbuger-ul MATLAB folosit pentru scrierea i depanarea fiierelor *.m.

Fig.1.3 Apelul funciei sum, cu parametrii (6,4). Logic, rezultatul returnat va fi 6+4 = 10.

!"

Definirea unei matrici. Exemplu: A = [1 2 3;4 5 6;7 8 9]. Rezultatul va fi o


matrice 3x3 de forma:

Introducere n MATLAB - 11 A=

!"

Referirea unui elemet al unei matrici. Exemplu: A(2,1)


ans =
4

!"

Adunare +

!"

Scdere

!"

Inmulire *

!"

Inmulirea elementelor elementelor corespondente .*

!"

Ridicarea la putere ^

!"

Ridicarea la putere a elementelor corespondente .^

!"

Imprirea la stnga \ sau la dreapta /

!"

Imprirea la stnga .\ sau la dreapta ./ a elementelor corespondente

!"

Transpusa unei matrici '

!"

Schimbarea dimensiunilor matricii funcia reshape (X, M, N). ntoarce o


matrice de M linii i N coloane cu elemente obinute din matricea original X .
2.4 Generarea vectorilor i matricilor

!"

Matrice nul funcia zeros (M, N). Genereaz o matrice MxN cu toate
elementele egale cu 0.

!"

Matrice unitate funcia ones (M, N). Genereaz o matrice MxN cu toate
elementele egale cu 1.

!"

Matrice identic funcia eye (N, M). Genereaz o matrice MxN n care
diagonala matricii are elementele egale cu 1, restul elementelor matricii fiind
0.

- 12 - Aplicaia nr. 1
!"

Generarea vectorilor cu pas liniar. Dac se cunosc limitele intervalului i pasul


dintre dou elemente, vectorul va fi generat cu instruciunea:
x = xmin : pas : xmax
Dac se cunosc limitele intervalului i numrul de elemenete N se foloseste
comanda urmtoare:
x = linspace (xmin, xmax, N).

!"

Generarea vectorilor cu pas logaritmic. Un vector x care va conine N


elemente distribuite logaritmic ntre decadele [10xmin, 10xmax] se genereaz
astfel:
x = logspace (xmin, xmax, N)
2.5 Informaii despre vectori/matrici

!"

Dimensiunea unei matrici funcia size (A). Returneaz un vector coloan


[M N] n care M reprezint numrul de linii iar N reprezint numrul de
coloane pentru matricea A.

!"

Lungimea unui vector funcia length (x). ntoarce numrul de elemente ale
vectorului x.
2.6 Instruciuni i fucii de control

!" Repetarea unei secvene de program de un anumit numr de ori instruciunea


FOR:
FOR variabil = expresie,
grup de instruciuni,
END
!" Executarea condiionat a instruciunilor instruciunile IF, ELSEIF, ELSE.
Forma general este:
IF expresie_1

Introducere n MATLAB - 13 declaraii_1


ELSEIF expresie_2
declaraii_2
ELSE
declaraii_3
END
Dac expresie_1 este adevrat se vor executa numai declaraii_1. Altfel, dac
expresie_2 este adevrat, se vor executa numai declaraii_2. n caz contrar, cnd
nici expresie_1 i nici expresie_2 nu e adevrat, se execut declaraii_3.
!" Repetarea unui grup de instruciuni de un numr nedefinit de ori instruciunea
WHILE. Forma general este:
WHILE expresie
grup de instruciuni
END
i se execut grup de instruciuni pn cnd expresie are toate elementele
nenule.
2.7 Reprezentarea graficelor 2D i 3D
!" Grafice 2D elementare, n coordonate liniare. Sunt generate prin intermediul
instruciunilor: plot (y), plot (x, y), plot (x, y, s). Prima form reprezint grafic
argumentul y n funcie de indici. A II-a form reprezint graficul vectorului y n
funcie de vectorul x. A III-a form permite specificarea culorii i a modului de
reprezentare a punctelor graficului. Controlul axelor unui grafic se realizeaz prin
intermediul instruciunilor loglog, semilogx, semilogy, folosite cu aceeai sintax
ca instruciunea plot.
Exist posibilitatea specificrii denumirii graficului title(text), axelor
graficului xlabel (text) i ylabel(text), sau a legendei graficului legend (string1,
string2, ).

- 14 - Aplicaia nr. 1
!" Grafice 3D elementare. Exist numeroase funcii care permit diverse reprezentri
3D. Dintre acestea cele mai des folosite sunt funcia plot3 (x, y, z) care reprezint
o linie n spaiul 3D care trece prin punctele ale cror coordonate sunt triplei
(x, y, z).
Pentru reprezentarea 3D a suprafeelor se poate folosi funcia mesh (X, Y, Z). n
aceste condiii o suprafa este parametrizat prin dou variabile independente care
variaz continuu n interiorul uni dreptunghi; fiecare punct este specificat prin trei
funcii: X(i, j), Y(i, j) i Z(i, j).
Exist posibilitatea controlul culorii (mesh (X, Y, Z, C)), al luminozitii (lighting),
al punctului de observaie (view (az, el)) sau se pot modifica diverse alte proprieti ale
unei suprafee.
3. Experimente
3.1 Scriei un program MATLAB care s implementeze operaiile cu matrici descrise
n 2.3.
Rezolvare:
%Operatii cu matrici
clear all
close all
clc
disp('definirea unei constante: x=2')
x=2
pause
disp('definirea unui vector: y = [1 2 3 4 5]')
y = [1 2 3 4 5]
pause
disp('definirea
[10 7 6;3 2 0;2
A = [1 2 3; 4 5
B = [10 7 6;3 2

unei matrici: A = [1 2 3; 4 5 6; 7 8 9], B =


4 5]')
6; 7 8 9]
1;2 4 5]

Introducere n MATLAB - 15 pause


disp('referirea unui element al unei matrici: A(2,1)')
A(2,1)
pause
disp('adunarea a doua matrici: C = A + B')
C = A + B
pause
disp('scaderea a doua matrici: D = A - B')
D = A - B
pause
disp('inmultirea a doua matrici: E = A * B')
E = A * B
pause
disp('inmultirea elementelor corespondente: F = A .* B')
F = A .* B
pause
disp('ridicarea la puterea x: G = A ^ x')
G = A ^ x
pause
disp('ridicarea la putere a elementelor corespondente: H = A .^
x')
H = A .^ x
pause
disp('impartirea a doua matrici: I = A / B')
I = A / B
pause
disp('impartirea elementelor corespondente a doua matrici: J =
A ./ B')
J = A ./B
pause
disp('transpusa unei matrici: K = A` ')
K = A'
pause
disp('schimbarea dimensiunii unei matrici: reshape(A,1,9)')
L = reshape(A,1,9)

3.2 Scriei un program MATLAB care s genereze vectori/matrici dup specificaiile


din 2.4 i s afieze informaii referitoare la acetia/acestea conform 2.5.

- 16 - Aplicaia nr. 1
Rezolvare:
%Generarea vectorilor si matricilor
clear all
close all
clc
disp('generarea unei matrici nule cu 2 linii si 4 coloane:
zeros(2,4)')
A = zeros(2,4)
pause
disp('generarea unei matrici unitate cu 3 linii si 2 coloane;
ones(3,2)')
ones(3,2)
pause
disp('generarea unei matrici identice cu 3 linii si 3 coloane:
eye(3)')
eye(3)
pause
disp('generarea unui vector cu pas liniar: a = 1:0.1:2')
a = 1:0.1:2
pause
disp('generarea unui vector cu pas logaritmic b =
logspace(1,3,5)')
b = logspace(1,3,5)
pause
disp('afisarea dimensiunilor unei matrici: size(A)')
A
size(A)
pause
disp('afisarea dimensiunii unui vector: length(x)')
a
length (a)

3.3 Scriei un program MATALB care s foloseasc instruciunile de control descrise


n 2.6.
Rezolvare:
%Instructiuni de control

Introducere n MATLAB - 17 clear all


close all
clc
disp('repetarea unei secvente de instructiuni de un nr. de ori:
FOR')
disp(' ')
for i=1:1:4
disp('acest text va fi afisat de 4 ori')
end
pause
disp(' ')
disp('executarea conditionata a instructiunilor: IF, ELSEIF,
ELSE')
disp(' ')
nr = input('introduceti un numar: ')
if nr > 10
disp('nr > 10')
elseif nr < 10
disp('nr < 10')
else
disp ('nr = 10')
end
pause
disp(' ')
disp('Repetarea unui grup de instructiuni de un numar nedefinit
de ori: WHILE')
disp(' ')
i=4
while i>0
i=i-1
end

3.4 Scriei un program MATLAB care s ilustreze posibilitile de creare a graficelor


2D i 3D pe baza funciilor descrise n 2.7. n acest sens reprezentai o distribuie
gaussian 2D respectiv 3D. Ecuaiile de generare sunt:

y*

1
e
2,+ 2

( x2
) &&
& 2+ 2
'

%
#
##
$

, pentru cazul 2D

i:
( x2 - y2 %
#
2+ 2 #$

) &&
1
z*
e '
2,+ 2

, pentru cazul 3D.

- 18 - Aplicaia nr. 1
Rezolvare:
%Grafice 2D si 3D
clear all
close all
clc
sigma=3;
disp('grafic 2D')
x=-1:.005:1;
y=(1/2*pi*sigma^2)*exp(-(x.^2/2*sigma^2));
plot(x,y)
title('Gaussian 2D')
xlabel('Axa Ox')
ylabel('Axa Oy')
pause
disp('grafic 3D')
x=-1:.01:1;
y=-1:.01:1;
[X,Y] = meshgrid(x,y);
Z=(1/2*pi*sigma^2)*exp(-(X.^2+Y.^2)/2*sigma^2);
figure
mesh(Z)
title('Gaussian 3D')
xlabel('Axa Ox')
ylabel('Axa Oy')
zlabel('Axa Oz')