Sunteți pe pagina 1din 12

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

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 (R""), 2".0"."999. Matlab ["], [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

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

- 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#ugnd 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# tastnd 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 apelnd 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

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

Introducere n MATLAB - 9 con$ine cuvntul 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.".").

Fig."." Lansarea editorului pentru fi%iere MAT:AB de tip *.m.

n urma acestei comenzi se poate introduce codul MATLAB aferent func$iei suma (fig.".2). Dup# salvarea fi%ierului (File, Save As, suma.m) se poate apela din linia de comand# nou# func$ie definit# (fig.".3). 2.3 Opera"ii cu matrici !" !" Definirea unei constante. Exemplu: x = 2 Definirea unui vector. Exemplu: y = [" 2 3 4 5]

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

- 10 - Aplica"ia nr. 1

Fig.".2 Editorul/debbuger-ul MATLAB folosit pentru scrierea %i depanarea fi%ierelor *.m.

Fig.".3 Apelul func$iei sum#, cu parametrii (6,4). Logic, rezultatul returnat va fi 6+4 = "0.

!"

Definirea unei matrici. Exemplu: A = [" 2 3;4 5 6;7 8 9]. Rezultatul va fi o matrice 3x3 de forma:

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

Introducere n MATLAB - 11 A= " 4 7 !" 2 5 8 3 6 9

Referirea unui elemet al unei matrici. Exemplu: A(2,") 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 stnga \ sau la dreapta / Imp#r$irea la stnga .\ 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 ". Matrice identic# func$ia eye (N, M). Genereaz# o matrice MxN n care diagonala matricii are elementele egale cu ", restul elementelor matricii fiind 0.

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

- 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 ["0xmin, "0xmax] 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_"

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

Introducere n MATLAB - 13 declara$ii_" ELSEIF expresie_2 declara$ii_2 ELSE declara$ii_3 END Dac# expresie_" este adev#rat# se vor executa numai declara$ii_". Altfel, dac# expresie_2 este adev#rat#, se vor executa numai declara$ii_2. n caz contrar, cnd nici expresie_" %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 pn# cnd 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 (string$, string2, ).

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

- 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." Scrie$i un program MATLAB care s# implementeze opera$iile 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 unei matrici: A = [1 2 3; 4 5 6; 7 8 9]') disp('B=[10 7 6;3 2 1;2 ) 4 5]') A = [1 2 3; 4 5 6; 7 8 9] B = [10 7 6;3 2 1;2 4 5]

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

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:') disp('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.

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

- 16 - Aplica"ia nr. 1 Rezolvare:


%Generarea vectorilor si matricilor clear all close all clc disp('generarea unei matrici nule cu 2 linii si 4 coloane:') disp('zeros(2,4)') A = zeros(2,4) pause disp('generarea unei matrici unitate cu 3 linii si 2 coloane') disp('ones(3,2)') ones(3,2) pause disp('generarea unei matrici identice cu 3 linii si 3 coloane:') disp('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') disp('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

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

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:

y*
%i:

" e 2,+ 2

( x2 )& & 2+ 2 & '

% # # # $

, pentru cazul 2D

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

( x2 - y2 % # 2+ 2 # $

, pentru cazul 3D.

Lect. Marieta Gata - Universitatea de Nord Baia Mare

Laborator de Inteligenta artificiala - Capitolul Retele neuronale

- 18 - Aplica"ia 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')

Lect. Marieta Gata - Universitatea de Nord Baia Mare

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