Documente Academic
Documente Profesional
Documente Cultură
PDS Lucrarea5 PDF
PDS Lucrarea5 PDF
LUCRAREA 5
STRUCTURI DE FILTRE NUMERICE.
INTERFEȚE GRAFICE
b z k
k
B z
H z k 0
(0.1)
N
A z
1 ak z k
k 1
x[n] b0 y[n]
1
z
a1 b1
1
z
a2 b2
1
z
aN bN
unde zk sunt zerourile iar pk sunt polii funcţiei de transfer grupaţi în perechi
complex conjugate pentru obţinerea funcţiilor de transfer de ordin 2 cu
coeficienţi reali H k ( z ) . Dacă funcţia de transfer are zerouri sau poli reali atunci
se poate face o descompunere şi cu polinoame de ordin 1. Rezultă o realizare în
cascadă, reprezentată în figura 5.3.
x[n] y1[ n ] y2 [ n ] y P [ n] y[ n]
H1 ( z) H 2 ( z) H P (z )
Sintaxe:
[SOS,G]=tf2sos(B,A)
obţine o matrice SOS care conţine coeficienţii secţiunilor de ordin 2 pentru
factorizarea funcţiei de transfer H ( z ) . B reprezintă vectorul coeficienţilor
numărătorului B( z ) iar A reprezintă vectorul coeficienţilor numitorului A( z ) .
SOS este o matrice de forma
SOS = [ b01 b11 b21 1 a11 a21
b02 b12 b22 1 a12 a22
...
b0L b1L b2L 1 a1L a2L ]
unde fiecare linie din matrice conţine coeficienţii unei structuri de ordin 2.
b0,k b1,k z 1 b2,k z 2
Hk z =
1 a1,k z 1 a2,k z 2
5. STRUCTURI DE FILTRE NUMERICE
[SOS,G]=zp2sos(Z,P,K)
obţine o matrice SOS care conţine coeficienţii secţiunilor de ordin 2 pentru
factorizarea funcţiei de transfer H ( z ) . Z reprezintă vectorul zerourilor, P
reprezintă vectorul polilor, iar K reprezintă câştigul descompunerii poli-
zerouri. Polii şi zerourile trebuie să fie daţi în perechi complex conjugate.
G este un scalar care reprezintă câştigul global al sistemului. Dacă G nu este
specificat acesta este inclus în prima secţiune.
P b0, p b1, p z 1 P
H z C C H p z (0.4)
p 1 1 a1, p z 1 a2, p z 2 p 1
y2 [ n ]
x[n] H 2 ( z)
y p [n]
H p (z )
C y[ n ]
[R,P,K]=residuez(B,A)
B( z )
descompune în fracţii simple funcţia H ( z ) definită de vectorii
A( z )
coeficienţilor B şi A astfel:
B( z ) r1 rN
1
1
k1 k2 z 1
A( z ) 1 p1z 1 pN z
R şi P sunt vectori coloană care conţin reziduurile şi, respectiv, polii.
K este un vector linie pentru termenii liberi (dacă ordinul numărătorului este
mai mare decât al numitorului).
Dacă p j este un pol multiplu de ordin m, descompunerea în fracţii simple va
conţine termeni de forma:
rj rj 1 rj m1
1 p j z 1 1 p j z 1
1
1 pjz 2 m
[B,A]=residuez(R,P,K)
reface funcţia de transfer H ( z ) din descompunerea în fracţii simple.
[r,p,k]=residuez(b,a)
[b1,a1]=residuez(r(1:2),p(1:2),[])
[b2,a2]=residuez(r(3:4),p(3:4),[])
etc...
5. STRUCTURI DE FILTRE NUMERICE
B( z ) Y ( z )
H ( z) (0.5)
A( z ) X ( z )
x[n] y1[n]
kN k N 1 k1
kN z 1 k N 1 z 1 k1
z 1
y2 [ n ]
cN cN 2 c1 c0
c N 1
y[n]
Figura 5.5. Realizarea în forma latice-scară
În figură apar pe lângă nodurile de intrare x[n] şi de ieşire y[n] încă două
noduri y1[n] şi y2 [n] . Se demonstrează că funcţiile parţiale de transfer asociate
acestor două ieşiri sunt:
Y1 ( z ) 1
H1 ( z ) (0.6)
X ( z ) A( z )
Y2 ( z ) z N A( z 1 ) A ( z )
H 2 ( z) (0.7)
X ( z) A( z ) A( z )
Din ecuaţia (0.6) rezultă că în cazul unei funcţii de transfer numai cu poli
structura latice nu are şi structura în scară, iar ieşirea filtrului va fi y1[n] .
În ecuaţia (0.7) s-a notat cu A ( z ) polinomul reciproc al numitorului A( z )
obţinut din polinomul A( z ) prin inversarea ordinii coeficienţilor.
A ( z ) aN aN 1z 1 a0 z N (0.8)
5. STRUCTURI DE FILTRE NUMERICE
for j = 0 :1: N
aN , j a j
end
for i = N : -1: 2
ki ai ,i
for j = 1:1: i -1
a ka
ai 1, j i , j i 2i ,i j
1 ki
end
end
k1 a1,1
end
Sintaxe:
[K,C]=tf2latc(B,A)
returnează vectorul K ce conţine coeficienţii de reflexie ki şi vectorul C ce
conţine coeficienţii structurii scară ci pentru un filtru RII cu coeficienţii
numărătorului aflaţi în vectorul B şi coeficienţii numitorului aflaţi în vectorul
A normaţi la a0 .
5. STRUCTURI DE FILTRE NUMERICE
K=tf2latc(B)
returnează vectorul K ce conţine coeficienţii de reflexie ki pentru un filtru
RFI cu coeficienţii funcţiei de transfer aflaţi în vectorul B normaţi la b0 .
K=tf2latc(1,A)
returnează vectorul K ce conţine coeficienţii de reflexie ki pentru un filtru
RII numai cu poli, cu coeficienţii numitorului aflaţi în vectorul A normaţi la
a0 .
Observaţie.
Dacă în urma calculelor unul din coeficienţii de reflexie va fi egal cu 1 atunci
funcţia tf2latc va genera eroare (deoarece termenul 1 ki2 care apare la
numitor este 0).
Exemplu:
Fie sistemul RII având funcţia de transfer:
B( z ) (0.5 z 1 )(1 0.5 z 1 )(1 1.2 z 1 1.8 z 2 )
H ( z)
A( z ) 1 0.5 z 1 1.2 z 3 0.5 z 4
Sintetizaţi structurile pentru formele cascadă, paralel şi latice.
// Deoarece primul termen liber este 0.5, polinomul trebuie înmulţit cu 0.5.
b=0.5*poly([z1; z2])
b =
0.5000 0.2500 -0.5000 2.7500 1.5000
// Forma cascadă
[SOS,G]=tf2sos(b,a)
5. STRUCTURI DE FILTRE NUMERICE
SOS =
1.0000 2.5000 1.0000 1.0000 1.5206 0.4564
1.0000 -1.2000 1.8000 1.0000 -1.0206 1.0955
G =
0.5
// Forma paralel
[r,p,k]=residuez(b,a)
r =
-0.6541
-0.6329 + 0.1741i
-0.6329 - 0.1741i
-0.5800
p =
-1.1091
0.5103 + 0.9138i
0.5103 - 0.9138i
-0.4115
k =
3.0000
[b2,a2]=residuez(r(2:3),p(2:3),[])
b2 =
-1.2659 0.3278
a2 =
1.0000 -1.0206 1.0955
k =
0.3061
-0.2794
1.2667
0.5000
c =
-2.3898
-1.4985
-0.2333
2.0000
1.5000
Observaţii:
Valorile exacte ale coeficienţilor obţinuţi mai sus au mult mai multe zecimale
decât cele afişate în MATLAB în formatul short. În practică, din cauza
reprezentării numerelor pe un număr finit de biţi apar diferenţe (trunchieri)
ale valorilor coeficienţilor faţă de cele simulate.
În exemplul anterior se poate observa că sistemul este instabil, fie prin faptul
că un pol este în modul mai mare ca 1, fie folosind testul Schür-Cohn pentru
coeficienţii de reflexie k se observă ca coeficientul k3 e supraunitar.
E1. Exerciţii:
Fie sistemele RII având funcţiile de transfer:
2 3.6 z 1 1.3z 2 0.4 z 3 0.2 z 4
1. H ( z ) =
1 2.8 z 1 3.15 z 2 1.75 z 3 0.425 z 4
(1 2 z 1 3z 2 4 z 3 )(1 z 3 )
2. H ( z )
1 0.8 z 2 0.66 z 4 0.35 z 6
1
3. H ( z )
1 1.27 z 1.19 z 1.18 z 3 0.4 z 4
1 2
guide
Pentru a putea rula interfața grafică, se selectează opțiunea Tools/Run din meniu,
sau se apasă butonul verde din meniul Toolbar.
E2. Exerciţii:
1. Pentru exemplul PDS_gui să se studieze fișierul cu același nume și
extensia .m, accesibil direct din meniul Toolbar de la butonul . Se va alcătui
5. STRUCTURI DE FILTRE NUMERICE
Observaţie:
Pentru a ști ce etichetă are fiecare buton în parte, se dă dublu-click de
exemplu pe butonul de editare a semnalului s, deschizând astfel fereastra
Inspector (sau Property Inspector). Aceasta conține toate proprietățile
obiectului curent, adică ale butonului de editare de text în acest caz.
Eticheta obiectului se găsește în câmpul corespunzător proprietății Tag.
Observați ce alte proprietăți mai au obiectele din exemplul dat.
E3. Exerciţii:
1. Pentru interfața grafică PDS_gui, să se completeze funcția callback
corespunzătoare butonului Spectrogram astfel încât, atunci când acest buton este
apăsat, să fie afișată spectrograma semnalului s dat ca ”Input signal”. Să se
verifice pentru un semnal s de tip sinusoidal cu frecvența de 800Hz, eșantionat
cu Fs = 2kHz și generat pe durata 0,5secunde, de amplitudine unitară.
Observaţie:
După completarea callback-ului, salvarea modificărilor, lansarea în
execuție cu Tools/Run, editarea câmpurilor Input signal și t cu valorile
5. STRUCTURI DE FILTRE NUMERICE
cerute, trebuie apăsat butonul Signal to ‘test.wav’ file. Astfel, semnalul dat
este scris într-un fișier test.wav care apoi se va deschide cu Open din
meniul Toolbar al interfeței grafice.
E4. Exerciţii:
1. Pentru interfața grafică gui_player să se identifice funcția callback
asociată obiectului pop-up meniu, având eticheta signSelect. În această funcție,
primele două linii sunt:
Identificați semnificația acestor linii căutând în Help sintaxa funcției get. Pentru
aceasta tastați în Command Window comanda
help get
E5. Exerciţii:
1. La interfața grafică gui_filter se va studia modul de implementare a
filtrului digital RII. De remarcat faptul că filtrul este reproiectat pentru fiecare
modificare adusă parametrilor acestuia în căsuța de editare dedicată lor sau în
meniul pop-up care permite alegerea tipului dintre FTJ, FTS, FTB și FOB! Ce
metodă a fost folosită pentru proiectarea filtrului RII, directă sau indirectă?