aplicatia1

12
APLICAŢIA NR. 1 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

Upload: ada-andra

Post on 11-Nov-2015

217 views

Category:

Documents


0 download

DESCRIPTION

aplicatii retele neuronale

TRANSCRIPT

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

    1 2 3

    4 5 6

    7 8 9

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

    ###

    $

    %

    &&&

    '

    ()

    *2

    2

    2

    221 +,+

    x

    ey , pentru cazul 2D

    i:

    ##$

    %&&'

    ( -)

    *2

    22

    222

    1 +,+

    yx

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