Sunteți pe pagina 1din 12

PNS Lucrarea 1

Introducere n Matlab

Lucrarea 1 Introducere n MATLAB


1. Considerente generale
1.1. Prezentarea mediului MATLAB Prelucrarea numeric semnalelor este necesar n multe aplicaii: industriale, telecomunicaii, biomedicin etc. Scopul acestor lucrri de laborator este nvarea metodelor de prelucrarea numeric a semnalelor unidimensionale. Instrumentul folosit este programul MATLAB deoarece este simplu de nvat i utilizat, foarte rspndit n mediile universitare i poate fi mereu actualizat. El integreaz analiza numeric, calculul matriceal, procesarea semnalelor i reprezentrile grafice. MATLAB (MATrix LABoratory) este un program interactiv, destinat prelucrrii numerice a datelor furnizate sub form vectorial sau matriceal. MATLAB-ul include si aplicaii specifice, numite TOOLBOX-uri. Acestea sunt colecii extinse de funcii MATLAB care dezvolt mediul de programare de la o variant la alta, pentru a rezolva probleme specifice. n cazul procesrii semnalelor se va lucra mai ales cu Signal Processing Toolbox. 1.2. Moduri de lucru n MATLAB Dup lansarea n execuie, programul MATLAB intr n modul de comand, afind prompterul >> , i ateapt introducerea unei comenzi de ctre utilizator. De exemplu, comanda: >> v = 0 : 10 va crea variabila v afind cele 11 elemente ale vectorului linie v, de la v[1]=0 la v[11]=10. n afara modului de lucru n linie de comand, MATLAB-ul lucreaz cu programe coninute n fiiere. Fiierele ce conin instruciuni MATLAB se numesc fiiere M (au extensia .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. 1.3. Lansarea n lucru a programului MATLAB. Ferestre de lucru Se selecteaz icoana specific programului MATLAB i apoi MATLAB.exe. Pe monitor va aprea fereastra de comenzi ca n figura 1.

PNS Lucrarea 1

Introducere n Matlab

Figura 1 - Fereastra de comenzi a MATLAB-ului Selecia unei comenzi din bara de comenzi sau meniul principal se poate face cu mouse-ul sau cu ajutorul sgeilor, prin deplasarea zonelor active sau prin tastarea literei marcate n fiecare subcomand.

Figura.2. Meniul ferestrei de comenzi Meniul principal: Pentru a deschide un fiier n Editorul/Debugger-ul MATLAB-ului din meniul de comand se procedeaz n felul urmtor: pentru un fiier nou, se selecteaz File, apoi New, apoi New M-file. pentru un fiier existent se selecteaz File, apoi Open M-file si apoi se selecteaz fiierul dorit.

a) b) Figura 3. Selectarea din meniul principal a unui fiier nou (a) sau a unuia existent (b) Tot din meniul principal se pot seta anumite proprieti, legate de formatul dorit a fi afiat, fonturi si opiuni de copiere. se selecteaz File, apoi Preferences ca n figura 4

PNS Lucrarea 1

Introducere n Matlab

Figura 4. Selectarea din meniul principal a comenzii Preferences 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: din meniul File se selecteaz New apoi Figure. Pe monitor va aprea o fereastr grafic ca n fig. 5.

Figura 5. Subdomeniul File al ferestrei grafice Selectarea comenzii File (din aceasta fereastr) urmat de New, Figure sau New Figure determin trecerea ntr-o fereastr grafic nou. 1.4. Informaii generale. Funcii de control general Implicit, 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 de funcie este obligatoriu s fie scris cu litere mici. Liniile de comentariu dintr-un fiier script / funcie sunt precedate de caracterul %. Pentru ajutor se tasteaz help pentru meniul ntreg sau help urmat de denumirea funciei sau fiierului .m. (Exemplu: help fft). Numrul de cifre zecimale n care sunt afiate diverse variabile nu reprezint precizia n care sunt efectuate calculele. Pentru a schimba formatul afiat se tasteaz format short e pentru 5 cifre zecimale, format long e pentru 15 cifre zecimale i format bank pentru plasarea a dou cifre zecimale la dreapta punctului zecimal. Acelai lucru se poate face din meniu, selectnd File, Preferences, General, iar aici formatul dorit (a se revedea fig. 4). 3

PNS Lucrarea 1

Introducere n Matlab

cd apeleaz directorul curent. dir listeaz fiierele din directorul curent. dir numedirector listeaz fiierele din directorul numedirector. Comenzile who si whos furnizeaz numele variabilelor ce au fost definite n

spaiul de lucru MATLAB. o who afieaz variabilele curente din memorie; o whos afieaz variabilele, dimensiunile lor, precum si tipul acestora (reale sau complexe). what listeaza fiierele M, MAT si MEX din directorul curent.

1.5. Fiiere M Fiierele M pot fi privite ca macro-uri ale comenzilor MATLAB salvate n fiiere cu extensia .m., adic numefisier.m . Un fiier M poate fi fie o funcie cu variabile de intrare i ieire, fie o list de comenzi. MATLAB cere ca fiierele M s fie salvate fie n directorul de lucru sau 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. Se procedeaz n felul urmtor: se tasteaz butonul Path Browser din butoanele de comand

apare fereastra se tasteaz butonul Browse; apare fereastra:

se caut directorul respectiv i se tasteaz OK, apoi Add to path din fereastra anterioar. path returneaz cile cu care lucreaz MATLAB-ul (n care sunt cutate fiierele apelate)

PNS Lucrarea 1 Exemplul 1 path

Introducere n Matlab

MATLABPATH

C:\MATLABR11\toolbox\matlab\general C:\MATLABR11\toolbox\matlab\ops C:\MATLABR11\toolbox\matlab\lang ...... addpath dirname adaug directorul dirname la calea curent din MATLAB. Aceast comand este echivalent cu procedura prezentat anterior de adugare a unei noi ci. Exemplul 2 Comanda addpath c:\nume are ca efect adugarea noii ci, adic se vor putea apela fiierele cu extensia .m din directorul ce are calea c:\nume. Fiierele M pot utiliza variabile definite de utilizator, variabile definite cu comanda input. De exemplu, s presupunem c vrem s rulm un fiier M pentru diferite valori ale unei variabile N. Atunci, n fiierul M se utilizeaz urmtoarea comand: N=input(N=). 1.6. Definirea variabilelor Variabilelor li se atribuie valori numerice, tiprindu-se direct expresia numeric. De exemplu a=1+2 conduce la rezultatul: a= 3 Rezultatul nu se afieaz dac se pune punct i virgul la sfritul expresiei, de exemplu a=1+2; n MATLAB se utilizeaz urmtorii operatori aritmetici: + * / ^ adunare scdere multiplicare mprire ridicare la putere transpus

Unei variabile i se poate atribui o formul ce utilizeaz operatorii menionai anterior i una sau mai multe mrimi definite anterior chiar n cadrul comenzii curente. De exemplu, presupunnd c a este definit anterior: b=3^a va returna valoarea: b= 27 Exist variabile predefinite: i=sqrt(-1) 5

PNS Lucrarea 1

Introducere n Matlab

j=sqrt(-1) pi=3,1416... etc. Exemplul 3 y=2*(1+4*j) conduce la y= 2.0000+8.0000i Pentru definirea variabilelor exist un numr de funcii predefinite, dintre care, cele mai uzuale pentru prelucrarea semnalelor, sunt prezentate n Tabelul 1. Tabelul 1. abs angle cos sin exp valoarea absolut faza ataat unui numr complex, n radiani funcia cos, cu argumentul n radiani funcia sin, cu argumentul n radiani funcia exponenial cu baza e

De exemplu, cu y din exemplul anterior, comanda: c=abs(y) conduce la: c= 8.2462 sau: u=angle(y) la: u= 1.3258 Se face observaia c funcia exp se poate utiliza cu numere complexe, de exemplu, cu acelai y, comanda: d=exp(y) conduce la: d= -1.0751+7.3104i fapt evident, verificabil utiliznd formula lui Euler d = e y = e Re y + j Im y = e 2 (cos 8 + j sin 8) 1.7. Definirea scalarilor, vectorilor i matricelor MATLAB-ul este un pachet de programe care lucreaz numai cu un singur tip de obiecte, matrice numerice rectangulare, cu elemente reale sau complexe. n acest sens scalarii sunt asimilai matricelor cu o linie i o coloan (1 1), iar vectorii sunt asimilai matricelor cu o linie (1 n) sau o coloan (n 1). Introducerea matricelor n mediul de lucru se face prin una din metodele: introducerea explicit; 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 punct-virgul ;; 6

PNS Lucrarea 1

Introducere n Matlab

elementele matricei sunt cuprinse ntre paranteze drepte [ ] . Elementele matricelor pot fi numere reale sau complexe sau orice alt variabil MATLAB. Elementele unei matrice 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 matricei sunt necesari doi indici, iar referirea la un element al unui vector se face cu un singur indice. Exemplul 4 Matricele sunt definite introducnd elementele linie cu linie: A=[1 2 3; 3 6 8] Aceast comand creeaz matricea 1 2 3 A= 3 6 8 Comanda A(2,1) afieaz rezultatul: ans = 3 Se remarc faptul c dac se atribuie o valoare unui element care ocup o poziie n afara dimensiunii maxime a unei matrice sau unui vector, dimensiunea acesteia/acestuia este mrit automat pn la valoarea indicelui noului element, iar elementele nedefinite sunt setate la valoarea zero. Exemplul 5 Comanda: A(2,5)=4 creeaz matricea: 1 2 3 0 0 A= 3 6 8 0 4 Comanda size(A) returneaz dimensiunea matricei A. Se definesc mai multe matrice particulare: matricea vid A=[ ] matricea nul de ordin n m : matricea unitar de ordin n m : matricea cu diagonal 1, de ordin n n

A= zeros(n,m) A= ones(n,m) A= eye(n)

Vectorii pot fi definii n dou moduri: introducerea explicit a componentelor vectorului; Exemplul 6 Comanda: v=[1 2 3 4 5 ] creeaz un vector cu o linie i 5 coloane. Comanda: v(6)=6 conduce la vectorul: v=[1 2 3 4 5 6]

PNS Lucrarea 1
1 Fie vectorul c = 2 3

Introducere n Matlab

Aadar c(2 ) = 2 . Al doilea mod este utilizat pentru a crea vectori cu elemente egal spaiate prin comanda: k=amin:pas:amax unde amin este valoarea primului element din vector, pas este valoarea incrementului, amax limita pn la care pot lua valori componentele vectorului. Dac incrementul lipsete, atunci implicit valoarea sa este 1. Exemplul 7 k=0:0.5:5.1 creeaz un vector cu elementele 0, 0.5, 1, 1.5,....5 . Comanda length(v) returneaz lungimea vectorului v. 1.8. Operaii cu matrice Fie X i Y dou matrice. Se definesc urmtoarele operaii a) adunarea i scderea, definite pentru cazul n care dimensiunile matricei X sunt egale cu dimensiunile matricei Y: Z=X+Y Z=X-Y b) nmulirea, definit atunci cnd X are dimensiunile (m n) iar Y (n p) Z=X*Y c) mprirea la dreapta, definit atunci cnd X are dimensiunile (n n) iar Y (n n) Z=X/Y i este identic cu X*Y-1 (Y-1 este inversa matricii Y). d) nmulirea element cu element (ntre componentele a dou matrice de aceleai dimensiuni) Z=X.*Y e) mprirea la stnga Z=X\Y este identic cu X-1*Y (X-1 este inversa matricii X). f) ridicarea la putere Z=X^p reprezint ridicarea la puterea p a matricei X. Expresia X^p are sens numai pentru matrice ptratice i p scalar. g) ridicarea la putere a elementelor unui vector/matrice Z=X.^p h) ridicarea la puterea elementelor unui vector/matrice a unui scalar Z=p.^X

i) transpunerea Z=X Acest lucru face ca pentru o matrice cu dimensiunea n m s se obin o matrice Z cu dimensiunea m n. 1.9. Operaii cu vectori 8

PNS Lucrarea 1

Introducere n Matlab

Operaiile cu vectori se efectueaz prin particularizarea regulilor de la operaii cu matrice impunnd ca una din dimensiuni sa fie egal 1, acolo unde dimensiunea permite acest lucru. a) Produsul scalar a doi vectori se poate calcula n urmtoarele moduri: z= sum(a.*b) dac vectorii a i b sunt amndoi fie vectori coloan fie vectori linie sau z=(a*b) dac a i b sunt vectori linie. Observaie: vectorii a i b trebuie s fie de aceeai dimensiune. 1.10. Construirea unei funcii Mediul de programare Matlab ofer posibilitatea crerii unei funcii ce folosete funcii Matlab, funcii definite anterior, operatori predefinii etc. Numele fiierului n care este scris funcia trebuie s fie identic cu numele funciei. De asemenea, prima linie a fiierului trebuie s conin sintaxa caracteristic definiiei unei funcii: function var_returnate = nume_functie(var_intrare)

De exemplu, o funcie ce realizeaz suma a dou variabile x i y, rezultatul fiind returnat n variabila z, se realizeaz astfel: function z=xplusy(x,y); z=x+y; Fiierul astfel scris se salveaz sub denumirea xplusy.m . Funcia definit anterior poate fi apelat din linia de comenzi Matlab, dintr-un script sau dintr-o alt funcie. De exemplu: >>a=1;b=2; c=xplusy(a,b); 1.11. Reprezentri grafice elementare Funciile de baz MATLAB pentru reprezentrile grafice sunt: plot loglog semilogx semilogy Pentru reprezentarea graficelor n coordonate liniare se utilizeaz funcia plot. Funcia plot se apeleaz cu una din sintaxele: plot (y) Dac argumentul y este complex, plot(y) este echivalent cu: plot(real(y), imag(y)). Dac y este un vector real (linie sau coloan), atunci funcia plot traseaz graficul y=y(i), unde i=1,2,L este numrul de ordine al elementului y, L fiind lungimea vectorului y. plot (x,y) reprezint vectorul y funcie de vectorul x. Dac x este vector, iar y este matrice, atunci coloanele lui y sunt trasate n funcie de vectorul x, rezultatul fiind reprezentarea mai multor grafice n aceeai fereastr grafic. Dac x i y sunt matrice de aceeai dimensiune, atunci se reprezint coloanele lui y n funcie de coloanele lui x. plot (x,y,linie tip) linie tip fiind o succesiune de caractere (vezi Tabelul 2) care specific tipul liniei cu care este trasat graficul. 9

PNS Lucrarea 1

Introducere n Matlab

plot (x1,y1,x2,y2,) reprezint simultan mai multe grafice, n acelai sistem de coordonate i n aceeai fereastr grafic. Graficele se pot trasa utiliznd linii i markere de diferite culori. Acest lucru este prezentat n Tabelul 2. Tabelul 2 continu ntrerupt dou puncte linie-punct Linii tip i markere MATLAB + -* : -. x . Culori cod MATLAB y Galben m Mov c albastru-deschis r Rou g Verde b Albastru w Alb k Negru

1.12. Reprezentarea discret a datelor Reprezentarea discret a datelor se face cu funcia stem sub forma unor linii terminate cu cercule. Se apeleaz cu una din sintaxele: stem(y) traseaz un grafic y=y[i], i=1,2,3 ....L din linii terminate cu cercule stem(x,y) traseaz un grafic cu linii terminate cu cercule, cu locaiile specificate de vectorul x. Valorile lui x trebuie s fie egal spaiate. stem(x,ylinie-tip) este similar funciei plot(x,y,linie tip), cu deosebirea c se traseaz graficul cu linii terminale cu cercule. Observaie: att la funcia plot ct i la funcia stem lungimile vectorilor de pe abscis i ordonat trebuie sa fie egale. 1.13. Personalizarea graficelor Pentru plasarea n cmpul graficelor a unor texte, etichete ale axelor, precum i a titlului se utilizeaz urmtoarele funcii: title(text) comand prin care titlul graficului se plaseaz deasupra acestuia; text fiind un ir de caractere care reprezint titlul graficului; xlabel(text) precizeaz eticheta axei x; text fiind un ir de caractere care reprezint numele axei, unitatea de msur etc.; ylabel(text) precizeaz eticheta axei y; text fiind un ir de caractere care reprezint numele axei, unitatea de msur etc.; grid on traseaz o reea de linii orizontale i verticale pe grafic grid off elimin reeaua de linii orizontale i verticale trasate pe grafic de grid on Exemplul 8 1. S se reprezinte grafic funcia f ( t ) = sin ( 2 50t ) , cu culoarea neagr i liniepunct i g ( t ) = f ( t ) cu markere * de culoare verde. S se scrie titlul graficele funciilor f(t) si g(t), pe axa x s se scrie t, iar pe axa y s se scrie f(t) i g(t). 10

PNS Lucrarea 1 t=0:.001:0.02 f=sin(2*pi*50*t) g=-f plot(t,f,'-.k',t,g,'*g'),grid on title('Graficele functiilor f(t) si g(t)') xlabel('t'), ylabel('f(t) si g(t)')
Graficele functiilor f(t) si g(t) 1

Introducere n Matlab

0.5 f(t) si g(t)

-0.5

-1

0.002 0.004 0.006 0.008

Figura 6. Graficul funciilor f(t) i g(t)

0.01 0.012 0.014 0.016 0.018 t

0.02

2. Aplicaii propuse
1. Operarea cu matrice, vectori i scalari a) Se dau matricele: A = [2 3 4; 5 2 9; 16 0 0]

B = [1 2 3; 1 1 1; 2 3 2] i scalarul p=2. S se calculeze n MATLAB: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.


C1 = A + B C2 = A B C3 = A + p C4 = A* B C5 = A * p
D = A' E = B' Z = A/ B W = A\ B Y = A^ p

S se verifice dac Z = A * B 1 i W = A1 * B . b) S se genereze un vector cu pas liniar, cu limitele: amin = 2, amax = 10, pas = 2 . c) S se genereze un vector cu pas liniar, cu limitele: amin = 2, amax = 10, N = 5 , unde N este numrul de elemente. d) S se genereze un vector cu N=5 elemente distribuite logaritmic ntre decadele 10-2 2 si 10 .
11

PNS Lucrarea 1

Introducere n Matlab

e) Fie un vector y=1:0.11:123 . S se calculeze lungimea vectorului y i s se genereze un vector cu toate elementele 1 de lungime egal cu lungimea vectorului y. f) S se efectueze produsul scalar al vectorilor: a = [2 3] b = [ 4 4] g) S se calculeze produsul element cu element al matricilor:
B = [0 1 0; 0 1 0; 0 1 0]
2. Reprezentarea grafic

A = [1 2 3; 4 5 6; 7 8 9]

S se reprezinte grafic funcia discret:

1 x ( n ) = sin 2 n 10

pentru n = 0, 20

Graficul s fie de culoare roie, reprezentat cu stelue (*) (a se face apel la comanda help stem) . S se scrie titlul i identificrile axelor.
3. Realizarea unui script

S se scrie un program n MATLAB care s calculeze produsul scalar al vectorilor a = 3i 4 j b = i + 2 j 2k


4. Realizarea unei funcii

S se creeze o funcie, denumit yprodx.m, prin care se face produsul scalar a doi vectori linie x i y, de aceeai lungime.

12