Sunteți pe pagina 1din 24

2.

SEMNALE ŞI SISTEME ÎN TIMP DISCRET

LUCRAREA 2
SEMNALE ŞI SISTEME ÎN TIMP DISCRET

2.1. Semnale în timp discret

Un semnal în timp discret este definit prin valorile acestuia măsurate la


momente discrete de timp. Semnalele în timp discret sunt reprezentate
matematic prin secvenţe de numere notate:

x[n] , N1 ≤ n ≤ N 2 (2.1)

În MATLAB aceste secvenţe se pot defini ca vectori linie sau coloană,


având elemente reale sau complexe. O primă limitare apare din faptul că aceşti
vectori sunt de lungime finită în timp ce în problemele de prelucrarea numerică
a semnalelor se poate lucra cu secvenţe de lungime infinită.

2.1.1. Definirea semnalelor în timp discret

În studiul semnalelor şi sistemelor în timp discret se utilizează câteva


secvenţe de bază ce vor fi prezentate în continuare, împreună cu modul lor de
definire în MATLAB.

• Impulsul unitate
Din punct de vedere matematic este definit astfel:
⎧1 , n = 0
δ [ n] = ⎨ (2.2)
⎩0 , n ≠ 0
Utilizând proprietatea de deplasare în timp se poate scrie că
⎧1 , n = n0
δ [ n − n0 ] = ⎨ (2.3)
⎩0 , n ≠ n0
27
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

Deoarece în MATLAB nu putem defini secvenţe de lungime infinită trebuie


precizat domeniul de valori pentru n. Pentru a facilita definirea unor secvenţe de
acest tip vom crea o funcţie MATLAB (vezi lucrarea 1, secţiunea 1.2.8.):

function [y,n]=impuls(li,ls,k);

%IMPULS - impulsul unitate (Dirac) in timp discret,


%definit pe un suport temporal finit
%-sintaxe:
%y=impuls(li,ls,k)
%[y,n]=impuls(li,ls,k)
%-parametrii de iesire:
%y=vector linie ce reprezinta delta(n-k) pe suportul
%[li;ls]
%n=vector linie ce reprezinta suportul [li;ls]
%-parametrii de intrare:
%li=limita inferioara a suportului temporal;
%ls=limita superioara a suportului temporal;
%k=indicele din delta(n-k)
%-pentru afisare: stem(n,y)

if nargin<3
error('Prea putine argumente de intrare')
elseif nargin>3
error('Prea multe argumente de intrare')
end

if nargout>2
error('Prea multe argumente de iesire')
end

if li>=ls
error('Suportul temporal este invalid')
end

if (k<li)|(k>ls)
error('Indicele nu apartine suportului temporal')
end

L=ls-li+1;
y=zeros(1,L);
y(k-li+1)=1;
n=li:ls;

28
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

Exemple:
Utilizând funcţia MATLAB impuls creată anterior, să se definească şi să se
reprezinte grafic secvenţele:
1. x1[n] = δ [n]
2. x2 [n] = 0,5δ [n − 3] , pentru − 10 ≤ n ≤ 10 .
[y1,n]=impuls(-10,10,0)
stem(n,y1),grid
[y2,n]=impuls(-10,10,3)
stem(n,0.5*y2),grid

• Treapta unitate
Din punct de vedere matematic este definit astfel:
⎧1 , n ≥ 0
u[n] = ⎨ (2.4)
⎩0 , n < 0
Utilizând proprietatea de deplasare în timp se poate scrie că
⎧1 , n ≥ n0
u[n − n0 ] = ⎨ (2.5)
⎩0 , n < n0
Se poate crea de asemenea o funcţie MATLAB pentru definirea
secvenţelor de tip treaptă unitate:
function [y,n]=treapta(li,ls,k);
%TREAPTA - treapta unitate in timp discret, definita
%pe un suport temporal finit
%-sintaxe:
%y=treapta(li,ls,k)
%[y,n]=treapta(li,ls,k)
%-parametrii de iesire:
%y=vector linie ce reprezinta u(n-k) pe suportul
%[li;ls]
%n=vector linie ce reprezinta suportul [li;ls]
%-parametrii de intrare:
%li=limita inferioara a suportului temporal;
%ls=limita superioara a suportului temporal;
%k=indicele din u(n-k)
%-pentru afisare: stem(n,y)
if nargin<3
error('Prea putine argumente de intrare')
elseif nargin>3
error('Prea multe argumente de intrare')
end
29
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

if nargout>2
error('Prea multe argumente de iesire')
end
if li>=ls
error('Suportul temporal este invalid')
end
if (k<li)|(k>ls)
error('Indicele nu apartine suportului temporal')
end
L=ls-li+1;
y=zeros(1,L);
y(k-li+1:L)=1;
n=li:ls;

Exemple:
Să se definească şi să se reprezinte grafic secvenţele:
1. x1[n] = u[n]
2. x2 [n] = 0,7(u[n + 3] − u[n − 3]) , pentru − 5 ≤ n ≤ 10 .
[y1,n]=treapta(-5,10,0)
stem(n,y1),grid
[y21,n]=treapta(-5,10,-3)
[y22,n]=treapta(-5,10,3)
y2=0.7*(y21-y22)
stem(n,y2),grid

E1. Exerciţii:
Să se definească şi să se reprezinte grafic următoarele secvenţe:
1. x1[n] = δ [n] − δ [n − 1] pentru − 10 ≤ n ≤ 10
2. x2 [n] = δ [n] − 0,5δ [n − 1] + 0,3δ [n − 2] − 2δ [n + 1] pentru − 10 ≤ n ≤ 10
3. x3 [n] = u[n] + 0,5u[n − 4] − 0,5u[n + 4] pentru − 10 ≤ n ≤ 10
4. x4 [n] = δ [n − 1] + u[n − 5] + δ [n + 2] − 2δ [n − 9] pentru − 10 ≤ n ≤ 20
n n
⎛1⎞ ⎛ 1⎞
5. x1[n] = ⎜ ⎟ − ⎜ − ⎟ pentru 0 ≤ n ≤ 10
⎝ 2⎠ ⎝ 2⎠
⎛ nπ ⎞ ⎛ nπ ⎞
6. x2 [n] = ln cos ⎜ ⎟ − sin ⎜ ⎟ pentru − 20 ≤ n ≤ 20
⎝ 15 ⎠ ⎝ 15 ⎠
⎛ nπ ⎞
7. x1[n] = (−1) n cos ⎜ ⎟ pentru 0 ≤ n ≤ 10
⎝ 15 ⎠
30
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

2.1.2. Convoluţia liniară a semnalelor în timp discret

Produsul de convoluţie liniară a două secvenţe numerice x1[n] şi x2[n] este


definit astfel:

x[n] = x1[n] ∗ x2 [n] = ∑ x1[k ] ⋅ x2 [n − k ] (2.6)
k = −∞

unde secvenţele x1[n] şi x2[n] s-au presupus a avea lungime infinită.


În MATLAB secvenţele numerice sunt privite ca nişte vectori şi ţinând
cont de faptul că ele sunt finite şi că indicele primului element dintr-un vector nu
poate fi zero (se efectuează o indexare cu 1) atunci definiţia de mai sus devine:
N −1
x[n + 1] = ∑ x1[k + 1] ⋅ x2 [n − k ] (2.7)
k =0

unde N este maximul dintre lungimile celor două secvenţe.

Sintaxa:
conv(x1,x2)
• returnează ca rezultat un vector de lungime egală cu lungimea vectorului x1
plus lungimea vectorului x2 minus 1, ce reprezintă produsul de convoluţie
liniară al celor două secvenţe definite prin vectorii x1 şi x2.

Exemplu:
Să se calculeze şi să se reprezinte grafic produsul de convoluţie liniară a
secvenţelor x1[n] = u[n] − u[n − 5] ( 0 ≤ n ≤ 10 ) şi x2 [n] = (0,9) n ( 0 ≤ n ≤ 20 ).
x1=treapta(0,10,0)-treapta(0,10,5);
n=0:20;
x2=0.9.^n;
x=conv(x1,x2);
subplot(2,2,1),stem(0:10,x1),title(’x1’),grid
subplot(2,2,2),stem(n,x2),title(’x2’),grid
subplot(2,1,2),stem(0:length(x)-1,x),title(’x’),grid
x1 x2
1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0
0 5 10 0 5 10 15 20

x
5

0
0 5 10 15 20 25 30

31
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

E2. Exerciţii:
Să se calculeze şi să se reprezinte grafic (ca în exemplul precedent) produsul de
convoluţie liniară a următoarelor perechi de secvenţe:

1. x1[n] = u[n − 5] − u[n − 15] x2 [n] = 10 − n pentru 0 ≤ n ≤ 20


2. x1[n] = sin ( 0.1 ⋅ π ⋅ n ) x2 [n] = δ [n − 5] pentru 0 ≤ n ≤ 20
3. x1[n] = cos(0, 25π ⋅ n) x2 [n] = (−1) n pentru 0 ≤ n ≤ 20

2.1.3. Transformata Fourier discretă

Transformata Fourier în timp discret (DTFT – Discrete Time Fourier


Transform) a unei secvenţe x[n] este dată de relaţia:

X (e jω ) = ∑ x[n]e − jωn (2.8)


n

F
unde ω este pulsaţia normată: ω = 2π
.
FS
F este frecvenţa nenormată (exprimată în Hz) iar FS este frecvenţa de
eşantionare.
F
Similar, frecvenţa normată este: f = .
FS
Funcţia X (e jω ) este periodică de perioadă 2π , deci este suficient să
cunoaştem comportarea sa în intervalul [−π ,π ) (interval de bază). Datorită
faptului că această funcţie este continuă, variabila ω putând lua o infinitate de
valori, nu este posibilă o implementare pe o maşină de calcul.

Pentru a realiza totuşi o analiză în frecvenţă se utilizează transformata


Fourier discretă TFD (DFT – Discret Fourier Transform), obţinută prin
discretizarea variabilei ω pe intervalul [0,2π ) în N puncte:
k
ωk = 2π , cu k = 0,1,…, N − 1 .
N

Astfel, transformata Fourier discretă a unei secvenţe x[n] este dată de


relaţia:

−j kn
X [k ] = ∑ x[n]e N
cu k = 0,1,…, N − 1 (2.9)
n

32
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

În figură sunt prezentate reprezentările spectrului unui semnal discret în


funcţie de pulsaţie sau frecvenţă normată şi corespondenţa cu frecvenţa
analogică. De asemenea se observă corespondenţa între componentele spectrale
de indice k calculate cu TFD şi spectrul reprezentat în pulsaţii normate.

X a ( jΩ )

ΩS ΩS
− Ω S > 2Ω max
2 2 Ω[rad/s]
-Ωmax 0 Ωmax F[Hz]
-Fmax 0 Fmax FS/2 FS

Ω
ω=
FS
X ( e jω )
F
f =
FS

ω
-π -ωmax 0 ωmax π 2π f
-0.5 -fmax 0 fmax 0.5 1

k
k = 0,..., N − 1 ωk = 2π
X (k ) N

k
0 123 N/2 N-1

În MATLAB, pentru calculul transformatei Fourier discrete se foloseşte funcţia


fft. Denumirea sa reprezintă prescurtarea de la Fast Fourier Transform
(transformata Fourier rapidă) şi indică faptul că este folosit pentru calcul un
algoritm rapid.

Sintaxe:
y = fft(x)
• dacă x este un vector se returnează un vector y de aceeaşi dimensiune cu
vectorul x ce conţine valorile transformatei Fourier discrete aplicată
elementelor vectorului x; lungimea transformatei Fourier (numărul de puncte
33
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

N în care se calculează transformata) este egală în acest caz cu lungimea


vectorului x.
• dacă x este o matrice se va returna matricea y de aceeaşi dimensiune cu
matricea x; coloana i din matricea y va conţine valorile transformatei Fourier
discrete aplicată elementelor coloanei i din matricea x.
y = fft(x,N)
• aceleaşi considerente ca în sintaxa precedentă cu deosebirea că în acest
caz se specifică şi numărul de puncte N în care se calculează transformata.

Exemple:
Să se calculeze transformata Fourier discretă a secvenţei:
x1[n] = u[n] − u[n − 10] , pentru 0 ≤ n ≤ 20
Să se reprezinte grafic partea reală, partea imaginară, modulul şi faza
transformatei Fourier discrete calculate.

x1=treapta(0,20,0)-treapta(0,20,10);
X=fft(x1);
figure(1),plot(X)
// se obţine o reprezentare grafică eronată deoarece X e un vector cu valori
complexe.
figure(2),plot(abs(X))
// calculul transformatei Fourier discrete s-a efectuat într-un număr de puncte
egal cu lungimea vectorului x1 (vezi sintaxa de la fft); pentru o mai bună
reprezentare vom efectua calculul într-un număr mai mare de puncte (N = 512):
X1=fft(x1,512);
figure(3),plot(abs(X1)),grid
10

0
0 100 200 300 400 500 600

// Această reprezentare corespunde însă intervalului de frecvenţă [0,2π ) (pe


abscisă avem numărul de puncte al vectorului X1 pentru că în sintaxa funcţiei
plot nu s-a specificat nimic altceva). De obicei se doreşte însă reprezentarea în
intervalul de bază [−π ,π ) . Având în vedere faptul că funcţia este periodică de
perioadă 2π atunci reprezentarea din intervalul [−π ,0) corespunde cu
reprezentarea din intervalul [π ,2π ) . Prin urmare trebuie realizată o inversare a

34
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

celor două jumătăţi ale vectorului X1. Acest lucru se realizează în MATLAB
prin utilizarea comenzii fftshift (schimbă între ele cele două jumătăţi ale
unui vector). În plus, pentru a avea pe abscisă reprezentarea în intervalul [−π ,π )
trebuie generat un vector cu pas liniar care să conţină în intervalul respectiv un
număr de elemente egal cu lungimea transformatei Fourier discrete calculate:
w=-pi:2*pi/512:pi-2*pi/512;
figure(4),plot(w,fftshift(abs(X1))),grid
10

0
-4 -3 -2 -1 0 1 2 3 4

// În figura 4 s-a reprezentat spectrul de amplitudini iar în figura 5 se va


reprezenta spectrul de fază calculat cu ajutorul funcţiei angle().
figure(5),plot(w,fftshift(angle(X1))),grid
3

-1

-2

-3
-4 -3 -2 -1 0 1 2 3 4

// În final putem reprezenta părţile reală şi imaginară ale TFD observăndu-se


simetria, respectiv antisimetria acestora.
figure(6)
subplot(2,1,1),plot(w,fftshift(real(X1))),grid
subplot(2,1,2),plot(w,fftshift(imag(X1))),grid
10

-5
-4 -3 -2 -1 0 1 2 3 4

10

-5

-10
-4 -3 -2 -1 0 1 2 3 4

35
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

Observaţii:
• Reprezentarea spectrelor a fost făcută în funcţie de pulsaţia normată
ω ∈ [−π , π ) .
• Valorile calculate în X1=fft(x1,512) reprezintă spectrul calculat în
k
ωk = 2π , cu k = 0,1,…, N − 1 . Astfel, numărul de puncte N în care se
N
calculează fft determină rezoluţia spectrală. Cu cât N este mai mare cu
atât aproximarea spectrului de frecvenţe continue X (e jω ) este mai bună.
• Dacă lungimea secvenţei x[n] este mai mică decăt N, secvenţa se
completează cu zeroruri, spectrul calculat reprezentând convoluţia între
spectrul secvenţei de lungime infinită şi spectrul funcţiei poartă de
lungime egală cu a secvenţei date.
• Spectrul calculat cu funcţia fft poate fi reprezentat şi în funcţie de
o indicele TFD: k = 0,1,…, N − 1 .
F ω
o frecvenţa normată: f = = , f ∈ [−0.5,0.5) .
FS 2π
f = -0.5:1/N:0.5-1/N;
o frecvenţa nenormată F = f ⋅ FS [Hz]. F ∈ [− FEs / 2, FEs / 2) .

E3. Exerciţii:
1.
a) Să se genereze secvenţa discretă s[n] obţinută prin eşantionarea cu frecvenţa
de eşantionare FS = 8kHz a semnalului s (t ) = sin ( 2πF0t ) de frecvenţă
F0 = 500Hz şi durată tMAX = 40ms . Câte eşantioane are secvenţa discretă?
b) Să se calculeze TFD a secvenţei în N=256 puncte cu funcţia fft.
c) Să se reprezinte spectrul de amplitudini (modulul TFD) în funcţie de k=0:N-1
d) Să se reprezinte spectrul de amplitudini în pulsaţii normate ω ∈ [−π , π )
e) Să se reprezinte spectrul de amplitudini în frecvenţe normate f ∈ [ −0.5,0.5)
f) Să se reprezinte spectrul de amplitudini în frecvenţe nenormate [Hz]
g) Să se reprezinte cu subplot spectrul de amplitudini şi de fază în funcţie de
frecvenţa normată.
h) Să se reprezinte cu subplot partea reală şi partea imaginară în funcţie de
frecvenţa normată.
Fiecare spectru va fi reprezentat într-o figură separată (funcţia figure()).
Graficul va fi completat cu funcţiile: grid, title şi xlabel.
2. Pentru programul de la exerciţiul anterior modificaţi pe rând următorii
parametri şi explicaţi schimbările apărute în reprezentarea spectrului semnalului.
a) Frecvenţa semnalului F0 = 200Hz .
b) Numărul de puncte al TFD N=1024 (pentru semnalul iniţial cu F0 = 500Hz ).

36
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

2.2. Sisteme în timp discret

Un sistem în timp discret transformă secvenţa de intrare x[n] într-o altă


secvenţă de ieşire y[n] . Notând S{•} , operatorul sistemului, acesta este descris
matematic prin relaţia:

y[n] = S{x[n]} (2.10)

Reprezentarea simbolică a unui sistem în timp discret este următoarea:

x[n] y[n]
S{•}

Pentru un sistem în timp discret, liniar şi invariant în timp (SDLIT) se numeşte


funcţie pondere sau răspuns la impulsul unitate, secvenţa care se obţine la
ieşirea sistemului dacă la intrare s-a aplicat impulsul unitate δ [n] :

h[n] = S{δ [n]} (2.11)

Astfel, un alt mod de a reprezenta simbolic un sistem în timp discret este:

x[n] y[n]
h[n]

Răspunsul y[n] al unui SDLIT la orice secvenţă x[n] , poate fi determinat prin
convoluţie dacă se cunoaşte răspunsul la impulsul unitate h[n] :

y[n] = x[n] ∗ h[n] = ∑ x[k ]h[n − k ] (2.12)


k

SDLIT pot fi reprezentate prin ecuaţii cu diferenţe finite cu coeficienţi constanţi,


care dau legătura între secvenţa de intrare şi cea de ieşire:

N M
∑ ak y[n − k ] = ∑ bk x[n − k ] (2.13)
k =0 k =0

Pentru analiza în frecvenţă a SDLIT reamintim formula pentru


transformata Z a unei semnal în timp discret x[n] :

X ( z ) = ∑ x[n]z − n (2.14)
n

37
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

Pentru un SDLIT se numeşte funcţie de sistem sau funcţie de transfer H (z ) ,


raportul între transformatele Z ale secvenţei de ieşire (răspunsul y[n] ) şi
secvenţei de intrare (excitaţia x[n] ), reprezentând de fapt transformata Z a
funcţiei pondere h[n] :

Z { y[n]} Y ( z )
H ( z) = = = Z {h[n]} (2.15)
Z {x[n]} X ( z )

Ţinând cont de ecuaţia cu diferenţe finite şi de proprietatea de întârziere a


transformatei Z ( Z{x[n − k ]} = z − k X ( z ) ), funcţia de sistem H (z ) se mai poate
scrie astfel:

M
∑ bk z −k
k =0
H ( z) = N
(2.16)
1 + ∑ ak z −k
k =1

în care s-a presupus că a0 = 1 . Rădăcinile polinomului de la numărător se


numesc zerourile funcţiei de transfer iar rădăcinile polinomului de la numitor se
numesc polii funcţiei de transfer. Pentru ca un sistem cauzal să fie stabil polii
trebuie să fie situaţi în interiorul cercului de rază unitate (modulul lor să fie
subunitar).

2.2.1. Răspunsul la impuls al unui SDLIT

Funcţia MATLAB impz permite determinarea şi afişarea răspunsului la


impuls (funcţia pondere) h[n] a unui SDLIT dacă se cunosc coeficienţii ak şi bk
din ecuaţia cu diferenţe finite sau din expresia funcţiei de transfer H (z ) .

Sintaxe:
[h,t] = impz(b,a)
• vectorul b conţine coeficienţii bk ( b = [ b0, b1, ..., bM ] ) iar vectorul a conţine
coeficienţii ak ( a = [ 1, a1, a2, ..., aN ] ); se vor returna un vector coloană h
care va conţine valorile eşantioanelor răspunsului la impuls al sistemului,
h[n] , şi un vector coloană t ce va conţine momentele de pe axa timp
(abscisa), alese în mod implicit, în care au fost calculate valorile
eşantioanelor; parametrul de ieşire t poate să lipsească din sintaxă în cazul
în care ne interesează doar răspunsul la impuls h.

38
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

[h,t] = impz(b,a,n)
• se precizează numărul de puncte n în care se doreşte a fi calculat răspunsul la
impuls h; vectorul coloană t va conţine valorile acestor puncte (acestea vor fi
0, 1, 2, ..., n-1); parametrul de ieşire t poate să lipsească din sintaxă în cazul
în care ne interesează doar răspunsul la impuls h.

[h,t] = impz(b,a,n,Fs)
• aceleaşi considerente ca în sintaxa precedentă cu deosebirea că cele n valori
din vectorul t vor fi distanţate cu pasul 1/Fs (0, 1/Fs, 2/Fs, ..., (n-1)/Fs).

[h,t] = impz(b,a,[],Fs)
• aceleaşi considerente ca în sintaxa precedentă cu deosebirea că se alege în
mod implicit numărul de puncte în care se calculează răspunsul la impuls h.

impz(b,a,...)
• reprezintă grafic răspunsul la impuls calculat; punctele de suspensie au fost
introduse pentru a sugera faptul că se poate folosi oricare combinaţie a
parametrilor de intrare din sintaxele precedente.

Exemple:
Să se determine şi să se reprezinte grafic funcţia pondere a unui SDLIT definit
prin:
1. y[n] − 0,9 y[n − 1] = 0,3 x[n] + 0,6 x[n − 1] + 0,6 x[n − 2]
1 + 0,5 z −1
2. H ( z ) =
1 − 1,8 cos(π / 16) z −1 + 0,81z −2

b=[0.3,0.6,0.6];
a=[1,-0.9];
// s-au definit vectorii b şi a ce conţin valorile coeficienţilor bk şi ak din ecuaţia
cu diferenţe finite.
[h,t]=impz(b,a);
// s-a calculat răspunsul la impuls al sistemului.
size(h) → ans =
93 1
size(t) → ans =
93 1
// se verifică faptul că h şi t sunt vectori coloană (vezi sintaxa) cu 93 de
elemente fiecare.
Se poate verifica, tastând în fereastra de comenzi t urmat de enter, că valorile
vectorului t sunt 0, 1, …, 92.
Pentru reprezentarea grafică se poate proceda în două moduri:

39
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

impz(b,a),grid 1.4

1.2

0.8

0.6

0.4

0.2

0
0 10 20 30 40 50 60 70 80 90

stem(t,h),grid
// se va obţine acelaşi rezultat grafic.

În mod asemănător procedăm şi pentru cel de al doilea exemplu:


b=[1,0.5];
a=[1,-1.8*cos(pi/16),0.81];
h=impz(b,a);
// vectorul coloană h va contine valorile eşantioanelor răspunsului la impuls al
sistemului definit prin funcţia de transfer H (z ) din exemplu.
impz(b,a),grid 5

-1
0 10 20 30 40 50 60 70 80 90

2.2.2. Răspunsul unui SDLIT la un semnal de intrare

Funcţia MATLAB filter permite determinarea răspunsului y[n] al


unui SDLIT dacă se cunosc coeficienţii ak şi bk din ecuaţia cu diferenţe finite
sau din expresia funcţiei de transfer H (z ) şi semnalul de intrare în sistem x[n] .

Sintaxe:
y = filter(b,a,x)
• dacă x este un vector atunci se returnează un vector y de aceeaşi dimensiune
cu vectorul x; vectorul x conţine valorile semnalului de intrare în filtru
(excitaţia); vectorul b conţine coeficienţii bk ( b = [ b0, b1, ..., bM ] ) iar
vectorul a conţine coeficienţii ak ( a = [ 1, a1, a2, ..., aN ] ); dacă primul
element din vectorul a este diferit de 1 atunci funcţia filter normează

40
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

coeficienţii ak ai sistemului la valoarea primului element din vectorul a


(astfel primul element din vectorul a devine 1); vectorul obţinut y reprezintă
răspunsul sistemului definit de coeficienţii din vectorii b şi a, dacă la intrare
este aplicată secvenţa definită de vectorul x.
• dacă x este o matrice atunci se returnează o matrice y de aceeaşi dimensiune
cu matricea x; funcţia filter va opera în acest caz pe coloane: coloana k
din matricea y reprezintă răspunsul sistemului definit de coeficienţii din
vectorii b şi a, dacă la intrare este aplicată coloana k din matricea x.

Exemple:
Să se determine şi să se reprezinte grafic răspunsul unui sistem definit prin:
1. y[n] − 0,9 y[n − 1] = 0,3 x[n] + 0,6 x[n − 1] + 0,6 x[n − 2]
1 + 0,5 z −1
2. H ( z ) =
1 − 1,8 cos(π / 16) z −1 + 0,81z −2
la semnalul de intrare x1[n] = u[n] − u[n − 10] , pentru 0 ≤ n ≤ 40 .

b=[0.3,0.6,0.6];
a=[1,-0.9];
// vectorii b şi a conţin valorile coeficienţilor bk şi ak .
x=treapta(0,40,0)-treapta(0,40,10);
// s-a definit vectorul x corespunzător secvenţei de intrare.
y=filter(b,a,x);
// s-a calculat răspunsul sistemului la secvenţa de intrare definită prin vectorul x.
n=0:40;
subplot(3,1,1),stem(n,x),grid,title(’x[n]’)
subplot(3,1,2),impz(b,a),grid,title(’h[n]’)
subplot(3,1,3),stem(n,y),grid,title(’y[n]’)
x[n]
1

0.5

0
0 5 10 15 20
h[n] 25 30 35 40
1.5

0.5

0
0 10 20 30 40 y[n] 50 60 70 80 90
10

0
0 5 10 15 20 25 30 35 40

În mod asemănător procedăm şi pentru cel de al doilea exemplu:


b=[1,0.5];
a=[1,-1.8*cos(pi/16),0.81];
41
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

y=filter(b,a,x);
subplot(3,1,1),stem(n,x),grid,title(’x[n]’)
subplot(3,1,2),impz(b,a),grid,title(’h[n]’)
subplot(3,1,3),stem(n,y),grid,title(’y[n]’)
x[n]
1

0.5

0
0 5 10 15 20
h[n] 25 30 35 40
5

-5
0 10 20 30 40 y[n] 50 60 70 80 90
40

20

-20
0 5 10 15 20 25 30 35 40

2.2.3. Răspunsul în frecvenţă al SDLIT

Funcţia MATLAB freqz permite determinarea răspunsului în frecvenţă


al unui SDLIT dacă se cunosc coeficienţii ak şi bk din ecuaţia cu diferenţe finite
sau din expresia funcţiei de transfer H (z ) . Dacă este apelată fără parametrii de
ieşire, cum se va vedea în sintaxă, această funcţie reprezintă grafic
caracteristicile de amplitudine-frecvenţă şi fază-frecvenţă ale SDLIT respectiv.

Sintaxe:
[H,W] = freqz(b,a,n)
• vectorul b conţine coeficienţii bk ( b = [ b0, b1, ..., bM ] ), vectorul a conţine
coeficienţii ak ( a = [ 1, a1, a2, ..., aN ] ), iar n reprezintă numărul de puncte în
care se calculează răspunsul în frecvenţă H; vectorul W va conţine valorile
acestor n puncte (valorile vor fi cuprinse între 0 şi π); este recomandat să se
aleagă n putere a lui 2 (pentru a permite un calcul eficient folosind un
algoritm FFT rapid); dacă n nu se specifică se alege în mod implicit 512.

[H,F] = freqz(b,a,n,Fs)
• această sintaxă permite specificarea unei valori pentru frecvenţa de
eşantionare Fs (în Hz); vectorul F va conţine valorile celor n puncte în care
se calculează răspunsul în frecvenţă H (în acest caz valorile acestor puncte vor
fi cuprinse între 0 şi Fs/2);
[H,W] = freqz(b,a,n,’whole’)
42
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

• aceleaşi considerente ca în cazul primei sintaxe cu deosebirea că valorile celor


n puncte de calcul, conţinute în vectorul W, vor fi cuprinse între 0 şi 2π; dacă
n nu se specifică se alege în mod implicit 512.

[H,F] = freqz(b,a,n,’whole’,Fs)
• aceleaşi considerente ca în cazul celei de a doua sintaxe cu deosebirea că
valorile celor n puncte de calcul, conţinute în vectorul F, vor fi cuprinse între
0 şi Fs; dacă n nu se specifică se alege în mod implicit 512.

H = freqz(b,a,W)
• răspunsul în frecvenţă H se calculează la frecvenţele specificate în vectorul W;
valorile acestor frecvenţe trebuie să fie cuprinse între 0 şi 2π; dacă W nu se
specifică se aleg în mod implicit 512 valori de frecvenţă.

H = freqz(b,a,F,Fs)
• răspunsul în frecvenţă H se calculează la frecvenţele specificate în vectorul F;
valorile acestor frecvenţe trebuie să fie cuprinse între 0 şi Fs (frecvenţa de
eşantionare în Hz).
freqz(b,a,...)
• reprezintă grafic caracteristicile amplitudine-frecvenţă şi fază-frecvenţă ale
răspunsului în frecvenţă calculat; punctele de suspensie au fost introduse
pentru a sugera faptul că se poate folosi oricare combinaţie a parametrilor de
intrare din sintaxele precedente.

Exemple:
Să se determine răspunsul în frecvenţă al SDLIT definite prin:
1. y[n] + 0,9 y[n − 1] = 0,3 x[n] + 0,6 x[n − 1] + 0,3 x[n − 2]
0.634 − 0.634 z −2
2. H ( z ) =
1 − 0.268 z −2
Să se reprezinte grafic caracteristicile amplitudine-frecvenţă şi fază-frecvenţă ale
răspunsului în frecvenţă calculat.

b=[0.3,0.6,0.3];
a=[1,0.9];
[H,W]=freqz(b,a);
// s-a calculat răspunsul în frecvenţă H în 512 puncte de frecvenţă cuprinse în
intervalul [0,π ] .
Reprezentările grafice cerute se pot realiza în două moduri:
figure(1)
subplot(2,1,1),plot(W,abs(H)),grid
subplot(2,1,2),plot(W,angle(H)),grid

43
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

0.8

0.6

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3 3.5

-1

-2

-3

-4
0 0.5 1 1.5 2 2.5 3 3.5

figure(2)freqz(b,a) 0

Magnitude Response (dB)


-20

-40

-60

-80
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized frequency (Nyquist == 1)
0
Phase (degrees)

-50

-100

-150

-200
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized frequency (Nyquist == 1)

În mod asemănător procedăm şi pentru cel de al doilea exemplu:


b=[0.634,0,-0.634];
a=[1,0,-0.268];
[H,W]=freqz(b,a);
freqz(b,a)

2.2.4. Diagrama poli-zerouri pentru funcţia de sistem a unui SDLIT


Funcţia MATLAB zplane permite afişarea diagramei poli-zerouri în
cazul funcţiei de sistem a unui SDLIT dacă se cunosc valorile polilor şi
zerourilor sau dacă se cunosc doar coeficienţii ak şi bk din ecuaţia cu diferenţe
finite sau din expresia funcţiei de transfer H (z ) .

Sintaxe:
zplane(z,p)
• dacă z şi p sunt doi vectori coloană ce conţin valorile zerourilor şi respectiv
polilor funcţiei de transfer H ( z ) atunci se va afişa diagrama poli-zerouri,
marcând zerourile cu semnul ‘o’ iar polii cu semnul ‘x’; dacă există poli sau
zerouri multiple, acestea vor avea înscris, lângă semnul respectiv şi ordinul de
multiplicitate.
• dacă z şi p sunt două matrice afişarea diagramei poli-zerouri se va face pentru
fiecare coloană în parte cu culori diferite.
zplane(b,a)
44
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

• dacă b şi a sunt doi vectori linie ce conţin valorile coeficienţilor bk şi ak


atunci se va afişa diagrama poli-zerouri a funcţiei de transfer H ( z )
(calculându-se rădăcinile polinoamelor de la numărătorul şi numitorul funcţiei
de sistem).

Reprezentarea polilor şi zerourilor unei funcţii de sistem (diagrama poli-


zerouri) se face în planul Z, în raport cu cercul de rază unitate, având pe abscisă
partea reală şi pe ordonată partea imaginară. Fiind privite deci ca numere
complexe, valorile respective pot fi exprimate în formă polară sau formă
carteziană.
Orice număr complex z poate fi exprimat în formă polară astfel:

z = z ⋅e (2.17)

în care: - z = modulul numărului complex z ;


- ϕ = argumentul (faza) numărului complex z ;

În formă carteziană numărul complex z se exprimă sub forma:

z = real ( z ) + j ⋅ imag ( z ) (2.18)

Im

1
imag{z} z
|z|
ϕ
-1 0 real{z} 1 Re

-1

Reprezentarea în planul Z a unui număr complez z

Atenţie:
În cazul în care dispunem de valorile coeficienţilor bk şi ak şi dorim să
determinăm valorile polilor şi zerourilor funcţiei de sistem respective se poate
utiliza funcţia MATLAB roots, care calculează rădăcinile unui polinom dacă
sunt precizaţi coeficienţii acestuia.

45
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

Dacă se doreşte determinarea valorilor coeficienţilor bk şi ak , având


valorile polilor şi zerourilor funcţiei de sistem, putem utiliza funcţia MATLAB
poly, care calculează coeficienţii unui polinom dacă sunt precizate rădăcinile
acestuia.
Verificaţi sintaxele celor două funcţii folosind comanda help.

Exemple:
π
1 j
1. Funcţia de transfer a unui SDLIT are un zerou de valoare r = e 3 . Ştiind că
2

∗ 1 1 1 j3
această funcţie are zerouri şi în r , , ∗ şi are doi poli în q = e şi q ∗ să
r r 3
se reprezinte diagrama poli-zerouri şi să se scrie forma nefactorizată a funcţiei
de transfer (să se găsească valorile coeficienţilor bk şi ak ).

r=1/2*exp(j*pi/3);
q=1/3*exp(j*2*pi/3);
z=[r;conj(r);1/r;1/conj(r)];
p=[q;conj(q)];
// s-au definit vectorii coloană z şi p (vezi sintaxa) ce conţin valorile zerourilor
şi respectiv polilor funcţiei de transfer.
zplane(z,p)
1.5

0.5
Imaginary part

-0.5

-1

-1.5

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2


Real part

// s-a reprezentat diagrama poli-zerouri.


b=poly(z) → b =
1.0000 -2.5000 5.2500 -2.5000 1.0000
a=poly(p) → a =
1.0000 0.3333 0.1111
// s-au calculat valorile coeficienţilor bk şi ak ai funcţiei de sistem. Forma
nefactorizată a acestei funcţii va fi:
1 − 2,5 z −1 + 5,25 z −2 − 2,5 z −3 + z −4
H ( z) =
1 − 0,3333 z −1 + z −2

46
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

2. Să se reprezinte diagramele poli-zerouri pentru sistemele în timp discret


definite prin:
1 + 0,5 z −1
a. funcţia de transfer: H ( z ) =
1 − 1,8 cos(π / 16) z −1 + 0,81z −2
(1 + 0,5 z −1 ) 2
b. funcţia de transfer: H ( z ) =
1 − 1,8 cos(π / 16) z −1 + 0,81z −2
c. ecuaţia cu diferenţe finite:
y[n] + 0.1 y[n − 1] + 0.1 y[n − 3] + 0.1 y[n − 4] = 0,3 x[n] + 0,6 x[n − 1] + 0,6 x[n − 2]

b=[1,0.5]; 1
a=[1,-1.8*cos(pi/16),0.81]; 0.8

zplane(b,a) 0.6

0.4

Imaginary part
0.2

-0.2

-0.4

-0.6

-0.8

-1

-1 -0.5 0 0.5 1
Real part

b=[1,1,0.25];
1
zplane(b,a)
0.8

0.6

0.4
Imaginary part

0.2
2
0

-0.2

-0.4

-0.6

-0.8

-1

-1 -0.5 0 0.5 1
Real part

// se observă ordinul de multiplicitate ale zeroului.

b=[0.3,0.6,0.6]; 1

0.8
a=[1,0.1,0,0.1,0.1]; 0.6
zplane(b,a) 0.4
Imaginary part

0.2

-0.2

-0.4

-0.6

-0.8

-1

-1 -0.5 0 0.5 1

47 Real part
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

E4. Exerciţii:
Se dau următoarele SDLIT definite prin:
1. y[n] = x[n] − 1,27 x[n − 1] + 0,81x[n − 2] − 0,5 x[n − 3] + 0,125 x[n − 4]
2. y[n] + 0,9 y[n − 1] = x[n]
3. y[n] + 0,13 y[n − 1] + 0,52 y[n − 2] + 0,3 y[n − 3] =
= 0,16 x[n] − 0,48 x[n − 1] + 0,48 x[n − 2] − 0,16 x[n − 3]
4. y[n] + 0,9 y[n − 2] = 0,3 x[n] + 0,6 x[n − 1] + 0,3 x[n − 2]
1 − 0,5 z −1 + 0,125 z −2 − 0,075 z −3
5. H ( z ) =
1 − 0,8 z −1 + 0,64 z −2 − 0,4 z −3 + 0,024 z −4
1
6. H ( z ) =
1 − 0,77 z + 0,44 z −3
−1

7. H ( z ) = 1 − 1,27 z −1 + 0,81z −2 − 0,5 z −3 + 0,125 z −4 − 0,3z −7


La intrarea acestor sisteme se pot aplica oricare din semnalele de intrare de mai
jos:
I. x1[n] = δ [n] pentru 0 ≤ n ≤ 40
II. x2 [n] = u[n] pentru 0 ≤ n ≤ 40
⎧ n ,0 ≤ n ≤ 10
III. x3 [n] = ⎨
⎩20 − n ,11 ≤ n ≤ 20
⎛ nπ ⎞
IV. x4 [n] = sin ⎜ ⎟ pentru 0 ≤ n ≤ 20
⎝ 5 ⎠

a) Să se determine răspunsul acestor sisteme la semnale de intrare I–IV şi să se


reprezinte grafic în domeniul timp (folosind subplot) semnalul de intrare,
funcţia pondere a sistemului şi semnalul de ieşire.
b) Pentru fiecare caz analizat să se reprezinte grafic în domeniul frecvenţă
(folosind subplot) semnalul de intrare, funcţia de transfer a sistemului şi
semnalul de ieşire.
c) Să se reprezinte diagramele poli-zerouri asociate sistemelor 1–7.

Tema de casă

1. Pentru semnalele primite ca tema la lucrarea 1 să se calculeze transformata


Fourier discretă folosind funcţia fft.
Obs. Semnalul 3 de tip dreptunghiular multinivel aleator se va înlocui cu
semnal multinivel periodic (obţinut prin repetarea aceleiaşi succesiuni de
niveluri).
Semnalul 8 de tip sinusoidal de frecvenţă variabilă se va înlocui cu un
semnal sinusoidal de perioadă 2.5 ms şi amplitudine 3 limitat superior la
valoarea maximă 2.
48
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

Lungimea N a TFD va fi aleasă o putere a lui 2 (128, 256, 512 sau 1024) mai
mică decât lungimea secvenţei.

Să se reprezinte grafic:
1) Spectrul de amplitudini
a) În funcţie de indicele k al TFD calculată. k=0…N-1.
b) În funcţie de pulsaţii normate [-π, π].
c) În funcţie de frecvenţa normată [-0.5, 0.5].
d) În funcţie de frecvenţa nenormată [-Fs/2 – Fs/2].
2) Spectrul de amplitudini în dB în funcţie de frecvenţe normate.
3) Spectrul de faze în funcţie de frecvenţe normate.

Să se reia reprezentarea spectrelor pentru lungimea N a TFD aleasă astfel ca să


îndeplinească condiţia N = k ⋅ T ⋅ FS , k ∈ (N să fie de ordinul sutelor, mai mic
decât lungimea secvenţei). Explicaţi diferenţele care apar între spectre în cele
două situaţii (deşi se reprezintă spectrul aceluiaşi semnal).

2.
a) Să se genereze următorul semnal discret: x[n] = s[n] + v[n] unde
• v[n] este un semnal aleator cu distribuţie normală (gaussiană).
• s[n] este un semnal sinusoidal de amplitudine 2 şi frecvenţa F0 aleasă
aleator în intervalul [FS/10, FS/3]. Frecvenţa de eşantionare FS = 8kHz.
Să se reprezinte semnalul x[n] în domeniul timp şi spectrul semnalului în
frecvenţe nenormate şi în pulsaţii normate. Identificaţi din spectru pulsaţia ω0
corespunzătoare frecvenţei F0 a componentei sinusoidale de la intrare.

b) Se consideră sistemul discret cu funcţia de transfer H ( z ) = b0 + b1 z −1 + b2 z −2


având atenuare infinită în ω0 determinat la punctul a). Atenuare infinită
înseamnă câştig 0 adică H (e jω ) = 0 deci z1 = e jω0 este zerou al lui H(z).
0

• Determinaţi zerourile astfel încât funcţia H(z) să aibă coeficienţi reali şi


scrieţi expresiile teoretice ale lui H(z) şi H (e jω ) .
• Reprezentaţi grafic diagrama poli-zerouri.
• Reprezentaţi grafic răspunsul în frecvenţă al sistemului.
• Reprezentaţi grafic răspunsul la impuls al sistemului.
• Calculaţi ieşirea sistemului dacă la intrare se aplică semnalul x[n].
• Reprezentaţi spectrul semnalului de la ieşire în frecvenţe nenormate şi în
pulsaţii normate.

49
2. SEMNALE ŞI SISTEME ÎN TIMP DISCRET

b0 + b1 z −1 + b2 z −2
c) Se consideră sistemul discret cu funcţia de transfer H ( z ) =
1 + a1 z −1 + a2 z −2
având zerourile zk determinate la punctul b) şi polii de forma p1 = ρzk , 0.7<ρ<1
(polii au acelaşi argument ca zerorurile dar sunt de modul subunitar).
• Determinaţi expresia teoretică a coeficienţilor şi scrieţi expresiile H(z)
şi H (e jω ) .
• Calculaţi toate zerourile şi toţi polii funcţiei H(z) şi reprezentaţi grafic
diagrama poli/zerouri. Se va alege 0.7<ρ<1.
• Reprezentaţi grafic răspunsul în frecvenţă al sistemului. Cum se modifică
răspunsul în frecvenţă dacă polii se apropie de cercul de rază unitate
(ρ→1)?
• Reprezentaţi grafic răspunsul la impuls al sistemului.
• Calculaţi ieşirea sistemului dacă la intrare se aplică semnalul x[n].
• Reprezentaţi spectrul semnalului de la ieşire în frecvenţe nenormate şi în
pulsaţii normate.

3. Reluaţi problema 2 înlocuind semnalul v[n] cu un semnal vocal. (se va folosi


exemplul din arhiva demo1.zip aflată pe site-ul laboratorului).

50

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

  • Instalatii de Stingere A Incendiilor
    Instalatii de Stingere A Incendiilor
    Document15 pagini
    Instalatii de Stingere A Incendiilor
    Tatarus Marius Marian
    Încă nu există evaluări
  • 2 - Bazele Comunicatiei Digitale
    2 - Bazele Comunicatiei Digitale
    Document50 pagini
    2 - Bazele Comunicatiei Digitale
    Marian Bobohalma
    100% (1)
  • 1 RC Introducere
    1 RC Introducere
    Document26 pagini
    1 RC Introducere
    Tatarus Marius Marian
    67% (3)
  • PB TDCR Set1a
    PB TDCR Set1a
    Document6 pagini
    PB TDCR Set1a
    Tatarus Marius Marian
    Încă nu există evaluări
  • 12b IntServ
    12b IntServ
    Document43 pagini
    12b IntServ
    Tatarus Marius Marian
    Încă nu există evaluări
  • 11 VoIP
    11 VoIP
    Document54 pagini
    11 VoIP
    Tatarus Marius Marian
    Încă nu există evaluări
  • 3 Terminale
    3 Terminale
    Document60 pagini
    3 Terminale
    Tatarus Marius Marian
    Încă nu există evaluări
  • Seminarul 1
    Seminarul 1
    Document9 pagini
    Seminarul 1
    Tatarus Marius Marian
    100% (1)
  • Subiecte Asc
    Subiecte Asc
    Document2 pagini
    Subiecte Asc
    Tatarus Marius Marian
    Încă nu există evaluări
  • L2 CD QPSK 16QAMnou
    L2 CD QPSK 16QAMnou
    Document26 pagini
    L2 CD QPSK 16QAMnou
    Tatarus Marius Marian
    Încă nu există evaluări
  • Lucrarea NR
    Lucrarea NR
    Document20 pagini
    Lucrarea NR
    Tatarus Marius Marian
    Încă nu există evaluări