Sunteți pe pagina 1din 12

APLICAŢIA NR.

Introducere în MATLAB

1. Generalităţi

În cadrul acestei lucrări toate referinţele au în vedere MATLAB versiunea


5.3.0 (R11), 21.01.1999.
Matlab [1], [2] reprezintă un mediu de programare destinat calculului numeric
şi reprezentărilor grafice în domeniul ştiinţei şi ingineriei. Elementul de bază cu care
operează MATLAB este matricea. Este uşor de extins, prin faptul că orice utilizator
poate adăuga propriile funcţii sau le poate modifica pe cele existente. Folosind
funcţiile predefinite ale MATLAB-ului se obţine o importantă economie de timp în
crearea de noi aplicaţii. Deasemenea pachetul software include un set de funcţii
specifice (denumite “toolbox”) anumitor domenii, ca de exemplu:

- Reţele neuronale (“Neural Networks”);


- Logică fuzzy (“Fuzzy Logic”)
- Prelucrări de imagine (“Image Processing”);
- Prelucrări de semnal (“Signal Processing”);
- Undişoare (“Wavelet”)
- Achiziţie 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 - Aplicaţia 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).
Adăugând la cele de mai sus şi numeroasele posibilităţi de reprezentare
grafică 2 sau 3D a datelor şi posibilitatea interfaţării codului MATLAB cu cel scris în
“C” sau limbaj de asamblare pentru procesoarele de semnal, avem argumentele
necesare care să justifice implementarea aplicaţiilor cu reţele neuronale prin
intermediul MATLAB.
Se oferă în continuare noţiuni MATLAB elementare [3], necesare unei bune
înţelegeri ale aplicaţiilor prezentate în capitolele următoare.

2. Elemente de bază MATLAB

2.1 Linia de comandă

Se foloseşte de regulă pentru lansarea în execuţie a programelor sau pentru


diverse comenzi MATLAB. Un program MATLAB se aplelează tastând în linia de
comandă numele fişierului. O condiţie necesară rulării programului este setarea căii în
care acesta se găseşte (din meniul principal, opţiunea “File”, submeniu “Set path”). În
modul linie de comandă fiecare linie este prelucrată imediat şi rezultatele sunt afişate.
Linia de comandă nu este recomandată pentru scrierea fişierelor MATLAB.

2.2 Crearea programelor MATLAB (fişierelor script şi fişiere funcţie)

Un program MATLAB, caracterizat de extensia *.m, constă dintr-o


succesiune de instrucţiuni MATLAB, cu posibilitatea apelării altor fişiere. El
presupune mai multe linii de cod care se pot scrie apelând editorul MATLAB implicit.
Acesta se lansează prin comanda “Edit”.
Un fişier script conţine o secvenţă de comenzi. Dacă prima linie a fişierului
Introducere în MATLAB - 9 -

conţine cuvântul “function”, fişierul respectiv este declarat ca fişier funcţie. O funcţie
diferă de un script prin faptul că poate lucra cu argumente.
Editorul oferă şi facilităţi de depanare (“debugging”) a programului prin
setarea unor puncte de oprire (“breakpoints”) şi rularea pas cu pas a programului.

Exemplul 1.1 Scrieţi o funcţie 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 fişiere MAT:AB de tip *.m.

În urma acestei comenzi se poate introduce codul MATLAB aferent funcţiei


“suma” (fig.1.2). După salvarea fişierului (“File”, “Save As…”, suma.m) se poate
apela din linia de comandă nouă funcţie definită (fig.1.3).

2.3 Operaţii cu matrici

!" Definirea unei constante. Exemplu: » x = 2


!" Definirea unui vector. Exemplu: » y = [1 2 3 4 5]
- 10 - Aplicaţia nr. 1

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

Fig.1.3 Apelul funcţiei 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=
1 2 3
4 5 6
7 8 9
!" Referirea unui elemet al unei matrici. Exemplu: » A(2,1)
ans =
4
!" Adunare +
!" Scădere –
!" Inmulţire *
!" Inmulţirea elementelor elementelor corespondente .*
!" Ridicarea la putere ^
!" Ridicarea la putere a elementelor corespondente .^
!" Impărţirea la stânga \ sau la dreapta /
!" Impărţirea la stânga .\ sau la dreapta ./ a elementelor corespondente
!" Transpusa unei matrici '
!" Schimbarea dimensiunilor matricii – funcţia reshape (X, M, N). Întoarce o
matrice de M linii şi N coloane cu elemente obţinute din matricea originală X .

2.4 Generarea vectorilor şi matricilor

!" Matrice nulă – funcţia zeros (M, N). Generează o matrice MxN cu toate
elementele egale cu 0.
!" Matrice unitate – funcţia ones (M, N). Generează o matrice MxN cu toate
elementele egale cu 1.
!" Matrice identică – funcţia eye (N, M). Generează o matrice MxN în care
diagonala matricii are elementele egale cu 1, restul elementelor matricii fiind
0.
- 12 - Aplicaţia nr. 1

!" Generarea vectorilor cu pas liniar. Dacă se cunosc limitele intervalului şi pasul
dintre două elemente, vectorul va fi generat cu instrucţiunea:
x = xmin : pas : xmax
Dacă se cunosc limitele intervalului şi numărul de elemenete N se foloseste
comanda următoare:
x = linspace (xmin, xmax, N).
!" Generarea vectorilor cu pas logaritmic. Un vector x care va conţine N
elemente distribuite logaritmic între decadele [10xmin, 10xmax] se generează
astfel:
x = logspace (xmin, xmax, N)

2.5 Informaţii despre vectori/matrici

!" Dimensiunea unei matrici – funcţia size (A). Returnează un vector coloană
[M N] în care M reprezintă numărul de linii iar N reprezintă numărul de
coloane pentru matricea A.
!" Lungimea unui vector – funcţia length (x). Întoarce numărul de elemente ale
vectorului x.

2.6 Instrucţiuni şi fucţii de control

!" Repetarea unei secvenţe de program de un anumit număr de ori – instrucţiunea


FOR:
FOR variabilă = expresie,
grup de instrucţiuni,
END
!" Executarea condiţionată a instrucţiunilor – instrucţiunile IF, ELSEIF, ELSE.
Forma generală este:
IF expresie_1
Introducere în MATLAB - 13 -

declaraţii_1
ELSEIF expresie_2
declaraţii_2
ELSE
declaraţii_3
END
Dacă expresie_1 este adevărată se vor executa numai declaraţii_1. Altfel, dacă
expresie_2 este adevărată, se vor executa numai declaraţii_2. În caz contrar, când
nici expresie_1 şi nici expresie_2 nu e adevărată, se execută declaraţii_3.
!" Repetarea unui grup de instrucţiuni de un număr nedefinit de ori – instrucţiunea
WHILE. Forma generală este:
WHILE expresie
grup de instrucţiuni
END
şi se execută “grup de instrucţiuni” până când “expresie” are toate elementele
nenule.

2.7 Reprezentarea graficelor 2D şi 3D

!" Grafice 2D elementare, în coordonate liniare. Sunt generate prin intermediul


instrucţiunilor: plot (y), plot (x, y), plot (x, y, s). Prima formă reprezintă grafic
argumentul y în funcţie de indici. A II-a formă reprezintă graficul vectorului y în
funcţie 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 instrucţiunilor loglog, semilogx, semilogy, folosite cu aceeaşi sintaxă
ca instrucţiunea plot.
Există posibilitatea specificării denumirii graficului title(‘text’), axelor
graficului xlabel (‘text’) şi ylabel(‘text’), sau a legendei graficului legend (string1,
string2, …).
- 14 - Aplicaţia nr. 1

!" Grafice 3D elementare. Există numeroase funcţii care permit diverse reprezentări
3D. Dintre acestea cele mai des folosite sunt funcţia plot3 (x, y, z) care reprezintă
o linie în spaţiul 3D care trece prin punctele ale căror coordonate sunt tripleţi
(x, y, z).
Pentru reprezentarea 3D a suprafeţelor se poate folosi funcţia mesh (X, Y, Z). În
aceste condiţii o suprafaţă este parametrizată prin două variabile independente care
variază continuu în interiorul uni dreptunghi; fiecare punct este specificat prin trei
funcţii: X(i, j), Y(i, j) şi Z(i, j).
Există posibilitatea controlul culorii (mesh (X, Y, Z, C)), al luminozităţii (lighting),
al punctului de observaţie (view (az, el)) sau se pot modifica diverse alte proprietăţi ale
unei suprafeţe.

3. Experimente

3.1 Scrieţi un program MATLAB care să implementeze operaţiile cu matrici descrise


în § 2.3.

Rezolvare:
%Operatii cu matrici
%Catalin-Daniel Caleanu, 2000

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 unei matrici: A = [1 2 3; 4 5 6; 7 8 9], B =


[10 7 6;3 2 0;2 4 5]')
A = [1 2 3; 4 5 6; 7 8 9]
B = [10 7 6;3 2 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 Scrieţi un program MATLAB care să genereze vectori/matrici după specificaţiile


din § 2.4 şi să afişeze informaţii referitoare la aceştia/acestea conform § 2.5.
- 16 - Aplicaţia nr. 1

Rezolvare:
%Generarea vectorilor si matricilor
%Catalin-Daniel Caleanu, 2000
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 Scrieţi un program MATALB care să folosească instrucţiunile de control descrise


în § 2.6.

Rezolvare:
%Instructiuni de control
%Catalin-Daniel Caleanu, 2000
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 Scrieţi un program MATLAB care să ilustreze posibilităţile de creare a graficelor


2D şi 3D pe baza funcţiilor descrise în § 2.7. În acest sens reprezentaţi o distribuţie
gaussiană 2D respectiv 3D. Ecuaţiile de generare sunt:
( x2 %
) && #
1 & 2+ 2 ##
y* e ' $
, pentru cazul 2D
2,+ 2
şi:
( x2 - y2 %
) && #
1 2+ 2 #$
z* e ' , pentru cazul 3D.
2,+ 2
- 18 - Aplicaţia nr. 1

Rezolvare:
%Grafice 2D si 3D
%Catalin-Daniel Caleanu, 2000

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

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