Sunteți pe pagina 1din 16

Laborator 2

Introducere în GNU Octave / MATLAB

1. Scopul lucrarii

Scopul lucrǎrii este de a prezenta principiile de bază privind programarea în mediul


MATLAB / Simulink.

2. Noțiuni teoretice
2.1. GNU Octave / MATLAB
Numele Matlab este o prescurtare a cuvintelor “matrix laboratory”. Aceasta deoarece,
inițial programul a fost destinat pentru calculul cu matrici. Limbajul a evoluat si a devenit un
standard în universități când este vorba de cursuri introductive sau avansate de matematică sau
inginerie. Funcțiile specifice unui anumit domeniu sunt grupate în colecții de funcții sau
“toolboxes”.
MATLAB (MATrix LABoratory) este un pachet de programe de înalta performanță
dedicat calculului numeric și a reprezentărilor grafice. SIMULINK-ul este parte integrantă a
acestui pachet soft. Simulink permite modelarea, simularea și analiza dinamică a sistemelor.
GNU Octave reprezintă o alternativă la popularul mediu de programare MATLAB.
Sintaxele celor două programe sunt în mare parte identice, iar formatul fișierelor salvate este
același (fișiere cu extensia .m). Avantajul GNU Octave este că acesta este oferit în mod gratuit
sub licență publică. Un neajuns al acestui program este lipsa unui echivalent pentru Simulink.

2.2. Interpretorul de comenzi


Fereastra principalã a programului permite accesul direct la interpretorul de comenzi.
Acesta este un instrument care executã o secvenţã de cod linie cu linie. Secvenţa de cod poate fi
introdusã direct de la tastaturã, iar dupã fiecare linie se apasã tasta Enter sau poate fi scrisã într-
un fişier de tip text, care se salveazã cu extensia “.M” si se executã prin simpla scriere a numelui
fişierului. Limbajul Matlab respectã principiile programãrii structurale, astfel cã existã o foarte
mare asemãnare între sintaxa si structurile sale cu cea a limbajului C.
Se considerã pentru exemplificare urmãtoarea secventã de cod:
>>suma = 0;
for i=1:10
suma = suma + i;
a(i) = i;
end
suma = a
plot(a,'k*')
Prin scrierea acesteia linie cu linie la prompter se va obþine urmãtorul rezultat:
>>a =
1 2 3 4 5 6 7 8 9 10
Se observã cã în prima linie am definit o variabilã cu numele “suma” care va conţine în
final suma numerelor de la 1 la 10. Structura de tip ”for” face ca variabila “i” sã ia succesiv
valori de la 1 la 10. La fiecare iteraţie variabila “suma” este incrementatã cu cantitatea “i”.
Vectorul “a” va avea pe fiecare poziţie valoarea indicelui.
Se pot desprinde imediat câteva particularitãţi importante: rezultatul fiecãrei operaţii este
afişat dacã operaţia nu se terminã cu simbolul “;”. Astfel pentru afişarea rezultatelor se scrie
numele variabilei si se apasă Enter.
In continuare sunt prezentate regulile aritmetice de lucru cu marici si vectori.
1. Definirea variabilelor sclare
>> x = 2 (apoi apăsaţi “enter” )
x=
2
>>x = 3
y=
3
>> z = x + y
z=
5
2. Definirea 2 vectori

>> x = [1 2 3]
x=
1 2 3

>>y = [4 5 6]
y=
4 5 6
>> y(1)
ans =
4
şi se repetă pentru y(2) şi y(3). Matlab foloseşte numerele întregi la indexul serie. Primul
element este y(1), al doilea este y(2), etc. zero, sau numerele negative nu sunt premise la index
serie.

3. Definirea matricilor

>> A = [1 2 3
456
7 8 9];
Se multiplica matricea A cu x transpus definit anterior:
>> A*x'
ans =
14
32
50
De exemplu o matrice cu zero de dimensiune 3 rânduri şi 6 coloane poate fi definită ca:
>> zeros(3,6)
ans =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

Primul număr, 3, indică the numărul de rânduri, al doilea număr, 6, este numărul de
coloane. Acesta poate fi realizat o dată:
>> ones(3,6)
ans =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
4. Definirea vectorilor largi

>> x = cos(0.1*pi*(0:99));
>> x = [1:1:50];
al doilea rand indică creşterea de la1 la 50. Când creşterea este un "1", este necesara doar
specificatia primului şi ultimului număr al seriei:

>> x = [1:50];
Se poate de asemena specifica ce rand de valori ale lui x sunt definite:

>> x(51:100) = [50:-1:1]


Aceasta este o metodă utilizată de specificare a valorilor "time" (timp) pentru grafic. De
exemplu, să presupunem un interval simplu, care în exemplul de mai sus era 1 msec.

>> time = [0:0.001:0.099];

5. Realizarea graficelor
Se folosesc comenzile:

>> plot(time,x)
>> xlabel('time (msec)')
>> ylabel('x(t)')

O altă metoda de prezentare a diagramelor de succesiune sau semnale discret-timp este


folosirea comandei "stem":

>> stem(time,x)
>> xlabel('time (msec)')
>> ylabel('x(t)')

În aceastã etapã este util a se urmări documentaţia modulelor următoare:


matlab\general - Comenzi de uz general
matlab\ops - Operatori si caractere speciale
matlab\lang - Structurile limbajului de programare
matlab\elmat - Matrice elementare si manipularea acestora
matlab\elfun - Funcţii matematice elementare
matlab\specfun - Funcţii matematice specializate
dspblks\dspblks - Informaţii despre toolbox-ul DSP
signal\signal - Informaţii despre toolbox-ul procesare de semnal
simulink\simulink - Informaţii despre instrumentul Simulink (de exemplu pentru a afla
mai multe despre operatori se tastează: “help ops” sau “help matlab\ops”).
Pentru obţinerea de informaţii în format Html sau Pdf (este vorba despre manualele complete ale
toolbox-urilor) se poate tasta “helpdesk” si astfel se deschide o paginã de tip Html în care
informaţiile necesare se pot găsi uşor prin apelarea funcţiei “Search” sau prin urmărirea link-
urilor din acea paginã. Toate variabilele definite sunt menţinute în memorie până la ştergerea
acestora explicitã sau închiderea programului. Aceste variabile pot fi afişate folosind comenzi de
la tastaturã sau în mod grafic (prin apelarea funcţiei “Show Workspace” din meniul “File”). Se
deschide astfel o fereastrã în care sunt arătate variabilele aflate în acest moment în memorie,
dimensiunea si tipul acestora si memoria ocupatã de fiecare. Prin selectare si apăsarea butonului
“Open” este vizualizat conţinutul acestora iar prin apăsarea butonului “Delete” pot fi şterse.
Demonstraţiile sunt în marea majoritate prezentate în modul grafic si multe dintre ele
folosesc instrumentul numit Simulink, prezentat în continuare.
2.3. Simulink
Pentru lansarea programului Simulink se tastează în mediul Matlab comanda: simulink.
Fereastra care se deschide conţine toate blocurile disponibile grupate pe categorii. Figura 1.1
aratã modul în care este reprezentatã aceasta în versiunea 6.3 sub sistemul de operare Windows.
În partea superioarã a figurii 1 sunt marcate iconiţele care se pot apasă pentru crearea unui
document nou sau pentru deschiderea unui fişier ce conţine o schemã deja realizatã. În partea
dreaptã existã un câmp de dialog cu ajutorul căruia pot fi căutate rapid în bibliotecã anumite
blocuri ale căror nume se cunoaşte. Partea centralã a ferestrei este ocupatã de componentele
propriu-zise organizate în grupuri. Se vor folosi în continuare blocuri din grupurile “Simulink”
si “DSP”. Dacã se deschide biblioteca “Simulink” se observã următoarele categorii de blocuri:
 Continuous - blocuri ce furnizează funcţii specifice circuitelor analogice: derivare,
integrare, funcţie de transfer, întârziere în domeniul timp, etc.;
 Discrete - blocuri ce furnizează funcţii specifice circuitelor discrete: funcţie de transfer
discretã, filtru discret, întârziere în domeniul timp cu un pas, integrator discret, etc.;
 Function & Tables - blocuri care permit extinderea setului de blocuri existent cu blocuri
create de utilizator;
 Math - funcţii matematice de ordin general: sumã, produs, amplificare, modul, fazã,
functii trigonometrice, etc.;
 Nolinear – funcţii specifice circuitelor neliniare;
 Signals & Systems - blocuri necesare pentru definirea semnalelor: masã, multiplexor de
mai multe semnale, funcţii pentru preluarea si salvarea valorilor în spaţiul Matlab, etc.;
 Sinks - aparate de mãsurã: multimetru, osciloscop, grafic XY, etc.;
 Sources - surse de semnal: generatoare de semnal sinusoidal, triunghiular,
dreptunghiular, zgomot, rampã, pulsuri, clock, etc.
Se poate obţine o descriere detaliatã a fiecărui bloc dacã se selectează si se urmãreste în
partea de jos a ferestrei simbolul acestuia si explicaţiile aferente (fig.1.1). O structurare
asemănătoare se întâlneşte în cadrul fiecărui modul. Celelalte module introduc blocuri noi care
realizează funcţii complexe prin combinarea blocurilor elementare descrise anterior. Pentru
scheme simple care utilizează elemente “clasice” blocuri descrise aici sunt suficiente. Modulul
“DSP blockset” introduce câteva blocuri noi pe care le vom folosi mai târziu. Acestea sunt
organizate în următoarele categorii:
 DSP Sinks - aparate de mãsurã specifice prelucrării digitale de semnal; cel mai folosit va
fi “FFT Frame Scope” – o fereastrã care afişeazã direct trasformata Fourier rapidã a
semnalului de interes;
 DSP Sources - surse de semnal discret, sunt completate sursele din modulul “Simulink”;
 Estimation - blocuri necesare pentru estimarea parametrilor unui semnal;
 Filtering - o colecţie de filtre configurabile;
 General DSP - blocuri generale folosite în DSP, cum ar fi buffere, registre dar si blocuri
care realizeazã transformata Fourier rapidã sau transformata cosinus discretã a unui
semnal;
 Math Functions - funcþii matematice aplicabile matricelor, vectorilor sau calcului
statistic.
Lansat programul MATLAB din mediul Windows, exista posibilitatea deschiderii
ferestrei de lucru sub Simulink: …/ Simulink Cu mici execepţii – dependente de versiunea
softului MATLAB - fereastra de lucru arată ca în figura 1.1.
Figura 1.1 Fereastra de lucru

Figura 1.2 Fereastra Simulink


Figura 1.3 Librarie componenete

Selectând comanda File, din meniul principal, se obţine un submeniu ca cel din figura
1.2 New determina deschiderea unui alt submeniu cu opţiunile “Model” sau “Library”. Pentru
deschiderea unei sesiuni de lucru – materializată printr-o nouă pagină goală - se selectează
varianta “Model”. Prin selectarea unei pictograme din posibilităţile oferite de meniul principal,
se deschide o nouă fereastră ce conţine “biblioteca” standard a subsistemului accesat. Din
fereastra dată se poate copia în pagina de lucru modelele de lucru necesare. În figura 1.4 se
prezintă pagina de lucru în care s-au copiat modelele: blocul pentru mărime constantă, un
instrument de vizualizare şi un generator de semnal.
Fiecare bloc este copiat în fişierul de lucru cu parametrii iniţiali. Prin execuţia unui dublu
– clic pe pictograma este posibilă modificarea parametrilor la valoarea dorită. După modificările
de rigoare se închide fereastra de dialog prin butonul aferent OK.

Figura 1.4 Ferestra librarie


Figura 1.5 Pagina de lucru

Se prezintă în figura 1.6 fereastra de dialog pentru fixarea parametrilor generatorului de


semnal. Frecvenţa (Frequency) şi amplitudinea semnalului (Amplitude) sunt cei doi parametrii
care se pot fixa la valoarea dorită. Unitatea de măsură şi categoria de undă sunt de asemenea
selectabile.

Figura 1.6 Parametrii generatorului de semnal

Semnul “>” de pe “Signal Generator” are semnificaţia portului de ieşire iar de pe blocul
“Scope” semnificaţia portului de intrare. Conectarea celor două blocuri se realizează prin
utilizarea butonului stâng, apăsat al mouse-lui între semnele celor două blocuri. Prin deschiderea
blocului Scope este pusă în evidenţă reprezentarea grafică a ecranului unui osciloscop printr-o
fereastră care poate fi poziţionată într-o zonă a monitorului. După conectarea blocurilor există
posibilitatea lansării simulării. În acest sens se stabileşte tehnica de integrare şi valoarea
parametrilor de simulare. Se utilizează în acest scop submeniul Simulation / Simulation
parameters. Simularea devine efectivă prin lansarea comenzii Start din cadrul aceleeaşi opţiuni
ale meniului principal.
2.4. Interpretorul de comenzi
Fereastra principală a programului permite accesul direct la interpretorul de comenzi. Acesta
este un instrument care execută o secvență de cod linie cu linie. Secvența de cod poate fi
introdusă direct de la tastatură, iar după fiecare linie se apasă tasta Enter sau poate fi scrisă
într-un fișier de tip text, care se salvează cu extensia “.M” si se execută prin simpla scriere a
numelui fișierului. Limbajul Matlab respectă principiile programării structurale, astfel că
există o foarte mare asemănare între sintaxa si structurile sale cu cea a limbajului C.

2.5. Variabile scalare


Declararea și efectuarea operațiilor cu scalari este foarte simplă:
>> x=2;
>
>> y=3;
>> z=x+y

2.6. Variabile predefinite


O serie de variabile și constante utilizate des în calcule sunt deja definite în GNU Octave
și MATLAB.

true #variabila booleana adevarat


false #variabila booleana fals

pi #constanta pi
e #constanta e

inf #reprezentare pentru infinit

i #radacina patrata a lui -1


j #radacina patrata a lui -1

2.7. Variabile vectoriale (vectori)


Declararea vectorilor se face astfel:
>> x=[1 2 3]
>> y=[4 5 6]
Pentru a selecta un anumit element dintr-un vector se folosește comanda x(n), unde n
reprezintă numărul elementului. Numărătoarea elementelor vectorilor începe de la 1. Ca o
continuare a exemplului de mai sus avem:

x(1) #returneaza primul element al vectorului x


y(3) #returneaza al treilea element al vectorului y

Dacă pentru vectorii de dimensiuni reduse nu este nicio problemă ca elementele lor să
fie definite individual, pentru vectorii lungi cu zeci sau sute de elemente această definiție nu
mai este practică. Pentru aceștia există următorul mod de definire:

x=[1:0.5:50] #vector cu primul element 1, ultimul element 50 si pas de 0.5


(99 de elemente)
Pasul folosit pentru a defini în acest fel vectorii este implicit 1. Din acest motiv, dacă
pasul dorit este 1, acesta nu mai trebuie menționat la definirea variabilei.
x=[1:50] #vector cu primul element 1, ultimul element 50 si pas implicit de
1 (50 de elemente)

Se poate, de asemenea specifica ce rând de valori ale lui x sunt definite:


x(51:100) = [50:-1:1] #se observa ca am definit elementele 51-100 ale
vectorului in completarea celor deja existente
Dacă se dorește definirea unui vector cu un anumit număr de elemente, aflate la distanță
egală unul față de celălalt, se poate folosi următoarea comanda linspace(x1,x2,n), unde x1 și x2
reprezintă primul, respectiv ultimul element al vectorului, iar n numărul total de elemente din
vector.

y=linspace(0,50,25) #vector de 25 de elemente cu primul element 0 si cu


ultimul element 50

Numărul implicit de elemente dintr-un vector astfel definit este 100. Prin urmare, dacă
se dorește definirea unui vector cu 100 de elemente, este suficient să se menționeze doar primul
și ultimul element din vector.

y=linspace(0,200) #vector de 100 de elemente cu primul element 0 si cu ultimul


element 200
În ceea ce privește operațiile matematice ce pot fi efectuate asupra vectorilor:
a=3; #definire scalar
x=[5 3 9]; #definire vector
y=[4 7 5];
z=x+y #suma a doi vectori
u=a*x #produsul unui vector cu un scalar
v=dot(x,y) #produsul scalar al vectorilor x si y
w=cross(x,y) #produsul vectorial al vectorilor x si y

2.8. Variabile matriceale (matrici)


Deoarece vectorii sunt doar un caz particular al matricilor, definiția și operațiileefectuate
asupra lor sunt similare.

A=[1 2 3; 4 5 6; 7 8 9] #definirea unei matrici cu 3 linii si 3 coloane.

Operațiile matematice ale ce pot fi efectuate cu matrici în GNU Octave / MATLAB:

A=[1 2 3; 4 5 6; 7 8 9]; #definirea unei matrici cu 3 linii si 3 coloane.


s=5; #definire scalar

B=A' #matricea B este egala cu transpusa matricei A.


C=A+B #suma a doua matrici
D=A*B #produsul a doua matrici

E=s*A #produsul unei matrice cu un scalar


x=det(A) #x este egal cu determinantul matricei A

Există comenzi și pentru definirea matricilor speciale:


A=ones(3,4) #matrice cu 3 randuri si 4 coloane cu toate elementele 1
B=zeros(4,5) #matrice cu 4 randuri si 5 coloane cu toate elementele 0
I=eye(3,3) #matrice unitate cu 3 randuri si coloane
v=[1 -9 5 -6 12] #definire vector
D=diag(v) #matrice diagonala cu elementele vectorului v pe diagonala
principala

2.9. Reprezentări grafice


GNU Octave și MATLB pun la dispoziția utilizatorilor posibilitatea de a genera, personaliza
și salva grafice. Una dintre cele mai utilizate funcții pentru reprezentare grafică este funcția
plot (x,y), unde x reprezintă valorile de pe axa Ox (valorile în funcție de care se face
reprezentarea funcției), iar y reprezintă valorile de pe axa Oy (valorile funcției). Rularea acestei
comenzi deschide o nouă fereastră cu reprezentarea grafică solicitată.

t=[0:0.1:10]; #definire vector timp


x=sin(t); #definirea functiei x(t)
plot(t,x) #generarea unui grafic al funcției x(t)
Graficele generate pot fi salvate prin comanda saveas(gcf,’nume_fișier.extensie’). De
exemplu, dacă se dorește salvarea graficului generat de exemplul anterior:

saveas(gcf,'Grafic.png')
Graficul salvat este prezentat mai jos (Figura 1.6). Locația implicită de salvare a graficelor este
C:\Users\Nume_utilizator. Graficele pot fi salvate ca .png, .jpg, .gif și .pdf.

Figura 1.7 Grafic generat cu funcția plot

Dacă dorim să reprezentăm mai multe curbe pe același grafic trebuie să ne folosim de
funcția hold on, care menține deschisă fereastra deja existentă cu graficul.
t=[0:0.1:10]; #definire vector timp
x=sin(t); #definirea functiei x(t)
y=cos(t); #definirea functiei x(t)
plot(t,x) #generarea unui grafic al functiei x(t)

hold on; #mentine deschisa fereastra cu graficul reprezentat


plot(t,y) #adauga graficului existent reprezentarea functiei y(t)

Graficul rezultat este prezentat în Figura 1.8.

Figura 1.8 Grafic cu două funcții reprezentate


Graficelor generate li-se pot adăuga diferite elemente suplimentare.

title('Reprezentare grafica') #Titlul graficului


xlabel('Timp (s)') #Text axa Ox
ylabel('f(t)') #Text axa Oy
legend({'sin(t)','cos(t)'},'fontsize',14,'location','southwest') #adauga
legenda cu font de marime 14 in stanga jos
Figura 1.9 Graficul completat cu elemente suplimentare

Aspectul curbelor reprezentate poate fi și el modificat.


t=[0:0.1:10]; #definire vector timp
x=sin(t); #definirea functiei x(t)
y=cos(t); #definirea functiei x(t)

plot(t,x,'linewidth',3,'color','red') #generarea unui grafic al functiei x(t)


cu o grosime de 3 si de culoare rosie
hold on;
plot(t,y,'.','color','blue','markersize',10) #generarea unui grafic al
functiei y(t) de tip linie punctata albastra cu marcatori de dimensiune 10

title('Reprezentare grafica')
xlabel('Timp (s)')
ylabel('f(t)')
legend({'sin(t)','cos(t)'},'fontsize',14,'location','southwest')

Figura 1.10 Graficul generat în urma rulării secvenței de cod anterioare

Un alt tip de grafic, potrivit pentru reprezentarea datelor discrete, poate fi generat prin
comanda stem(x).

v=[1:20]; v(21:30)=[19:-1:10]; v(31:50)=linspace(12,25,20);


#definire vectorstem(v)
Figura 1.10 Grafic de generat cu funcția stem

Titlul graficului, textele axelor și legenda se definesc în același mod pentru graficele
stem(x), ca pentru cele plot (x).

Exemplu1. Analiza unui circuit RLC derivatie – regim tranzitoriu


Să se calculeze şi să se reprezinte grafic răspunsul în frecvenţă al circuitului RLCdin figura ştiind că:
R=10 kΩ, C=1,12 µF şi L =5H. Studiati care este efectul modificarii valorii rezistentei R,
dacaaceastava lua valoarea de 100Ω.

- Se scriu ecuatiile de functionare ale circuitului:

𝑑2𝑈 𝑑𝑈
𝐿𝐶 𝑑𝑡 2𝐶 + 𝑅𝐶 𝑑𝑡𝐶 + 𝑈𝐶 = 𝑈𝑖 𝑡 ; 𝑢𝐶 0 = 𝑂
- Se detrmina expresia functiei de transfer:
𝑅
𝑈0 (𝑝) 𝑅 𝑝𝑅𝐶 𝑝
𝐿
𝐻 𝑝 = = 1 = 𝑝 2 𝐿𝐶+𝑝𝑅𝐶 +1 = 𝑅 1
𝑈𝑖 (𝑝) 𝑅+𝑝𝐿 + 𝑝 2 +𝑝 +
𝑝𝐶 𝐿 𝐿𝐶

Se vor tasta direct în fereastra de comenzi, explicând rezultatele:


Pentru R1=R, R2=100.

>> L=5; C=1.25e-6; R1=10000; R2=100;


>> num1=[R1/L 0];
>> den1=[1 R1/L 1/(L*C)];
>> w=logspace(1, 4);
>> f=w/(2*pi);
>> h1=freqs(num1,den1,w);
>> mag1=abs(h1);
>> phase1=angle(h1)*180/pi;
>> num2=[R2/L 0];
>> den2=[1 R2/L 1/(L*C)];
>> h2=freqs(num2,den2,w);
>> mag2=abs(h2);
>> phase2=angle(h2)*180/pi;
>> subplot(221),
>> loglog(f,mag1,'+'),title('Raspunsul amplitudine pt.R=10k'),ylabel('Amplitudinea')
>> subplot(222),loglog(f,mag2,'--'),title('Raspunsul amplitudine pt.R=0.1k'),ylabel('Amplitudinea')
>> subplot(223),semilogx(f,phase1,'--'),title('Raspunsul faza pt. R =10k'),
>> xlabel('Frecventa (Hz)'),ylabel('Unghiul de faza (grade)')
>> subplot(224),semilogx(f,phase2),title('Raspunsul faza pt. R =0.1k'),
>> xlabel('Frecventa (Hz)'),ylabel('Unghiul de faza (grade)')
SISTEME IN TIMP DISCRET

1. Notiuni teoretice
Matematic un sistem discret este decris printr-un operator S 
 ca în figura de mai jos, unde xn
se numeşte semnal de intrare (excitaţie), iar yn este semnalul de ieşire (rǎspuns) yn  S xn :

xn yn
S 

 este numit liniar L


Un sistem discret descris prin operatorul S   dacǎ şi numai dacǎ
satisface principiul superpoziţiei, şi anume:

L1 x1 n   2 x2 n  1 Lx1 n   2 Lx2 n, 1 , 2 , x1 n, x2 n

Folosind relaţia de descompunere a unui semnal discret în funcţie de impulsul Dirac şi


relaţia superpoziţiei se poate obţine relaţia de definiţie a ieşirii unui sistem liniar arbitrar yn ,
pentru semnalul de intrare xn :
   
yn   Lxn   L   xk  n  k    xk L n  k 
n   n 

Termenul L n  k  poate fi interpretat ca rǎspunsul unui sistem la impuls şi se noteazǎ


cu hn , k  . Astfel relaţia de mai sus devine:

y n    xk hn , k 
n  

Un sistem liniar invariant în timp SLIT poate fi:

a) recursiv, descris de ecuatia:

N M
y n   a k y n  k    bk x n  k  sau
k 1 k 0

N M  a' k  1, pt. k  0
 a' k y n  k    bk x n  k  cu 
k 0 k 0 a' k   a k , pt. k  1, , N
b) nerecursiv, descris de ecuatia:

L
y  n   b k x  n  k 
k 0
Aceste ecuatii poarta denumirea de ecuatii cu diferente finite si sunt echivalente cu ecuatiile
diferentiale folosite pentru caracterizarea sistemelor continue. Dupa forma functiei pondere sistemele
discrete pot fi:
1. cu raspuns finit la impulsul unitate - RFI;
2. cu raspuns infinit la impulsul unitate - RII
Observatii:
a) Convolutia este o metodã de aflare a rãspunsului sistemului discret SLIT la secventa de intrare
x(n) cand se cunoaste functia pondere a sistemului.
2. Raspunsul in frecventa al sistemelor discrete SLIT
Raspunsul in frecventa al sistemelor discrete SLIT, H(ej), se poate defini in trei moduri:
 Raspunsul in frecventa ca TFDt a functiei pondere
 
j
H(e )   h(n) e j n  , cu h(n) - functia pondere
n  
 Raspunsul in frecventa ca factor de transfer al secventei
e j n  de la intrarea sistemului la iesire.
Daca la intrarea sistemului se aplica semnalul armonic e j n  , atunci iesirea sistemului y(n) este:
y(n) = H(e j  ) e j n  ,
unde  frecventa armonica a semnalului de intrare.
 Calculul raspunsul sistemului cu transformata Z
Aplicand transformata Z ecuatiei cu diferente finite a sistemului discret (vezi Lucrarea 1),
rezulta:
M

Y  z  k 0
bk z  k
H z   
X z  N
 a k z k
k 0
Relatia (5.6) caracterizeaza raspunsul sistemului in planul Z. X(z) si Y(z) sunt transformatele Z
ale intrarii respectiv iesirii sistemului. H(z) este functia de transfer a sistemului discret si este data de o
expresie rationala de forma B(z)/A(z) unde B(z) si A(z) sunt polinoame in z -1. Radacinile polinomului
B(z) sunt zerourile lui H(z), iar radacinile lui A(z) reprezinta polii acestuia. Deci functia de transfer a
sistemului este determinata daca se cunosc coeficientii {a0 , a1,... , a N , b0 , b1 ,...,bn } sau,
corespunzator, polii si zerourile.

3. Stabilitatea sistemelor liniare si invariante in timp


Un sistem liniar, invariant in timp si cauzal este stabil daca si numai daca functia de transfer H(z)
asociata, are toti polii situati in interiorul cercului unitate in planul z.
Stabilitatea implica faptul ca cercul unitate face parte din domeniul de convergenta al lui H(z).

4. Aplicatii

4.1 Se considera un sistem discret, liniar, avand raspunsurile yk[n] pentru excitatiile xk[n] cu k=1, 2, 3,
prezentate in tabelul de mai jos. Sa se determine si sa se reprezinte grafic raspunsul y4[n] al sistemului la
excitatia x4[n].

n -1 0 1 2 3 4
x1[n] 0 1 2 3 0 0
x2[n] 0 3 2 1 1 0
x3[n] 0 0 3 2 -1 0
x4[n] 0 10 2 2 5 0

n -1 0 1 2 3 4
y1[n] 1 5 3 -1 0 -2
y2[n] 0 -1 1 2 -3 5
y3[n] 0 -2 3 5 1 -2
y4[n] 1 -2 12 ? ? ?

Indicatie: Excitatia x4[n] trebuie exprimata ca o combinatie liniara a semanlelor x1[n], x2[n],
x3[n], adica:
x4[n]= a *x1[n]+b* x2[n]+c* x3[n].
Dand lui n valorile {0, 1, 2} se obtine sistemul liniar urmator:
a  3b  10

2a  2b  3c  2
3a  b  2c  2

Matricial acest sistem poate fi scris: AX=B
Utilizand linia de comanda in Matlab sistemul se rezolva

>>a =[1 3 0; 2 2 3; 3 1 2]; % reprezinta coeficientii necunoscutelor a, b, c


>>b =[10 2 2]';
>>x=a\b
Solutia sistemului este: a=1, b=3, c=-2. Trebuie verificata in continuare compatibilitatea sistemului
pentru n=3.
Sa se determine expresia lui x4[n] si raspunsul y4[n].

4.2 Se considera un sistem discret, liniar, avand raspunsurile yk[n] pentru excitatiile xk[n] cu k=1, 2, 3,
prezentate in tabelul de mai jos. Pentru n=3 verificati compatibilitatea sistemului si apoi sa se determine
si sa se reprezinte grafic raspunsul y4[n] al sistemului la excitatia x4[n].

n -1 0 1 2 3 4
x1[n] 1 1 2 3 0 0
x2[n] 0 2 3 1 1 0
x3[n] 1 0 2 2 -1 0
x4[n] 0 1 3 4 5 0

n -1 0 1 2 3 4
y1[n] 0 1 2 3 0 0
y2[n] 0 2 -1 1 0 1
y3[n] 0 2 1 2 1 0
y4[n] 0 1 2 0 -1 1

4.3 Se vor nota si explica rezultatele obtinute la pct. 4.1, 4.2.

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