Sunteți pe pagina 1din 15

5.

STRUCTURI DE FILTRE NUMERICE










LUCRAREA 5
STRUCTURI DE FILTRE NUMERICE.
INTERFEE GRAFICE



5.1. Structuri pentru filtre cu rspuns infinit la impuls.

Fie funcia de transfer

( )
( )
( )
0
1
1
M
k
k
k
N
k
k
k
b z
B z
H z
A z
a z

=
= =
+

(0.1)

n domeniul timp, filtrul poate fi caracterizat prin ecuaia cu diferene
finite:


1
[ ] [ ] [ ]
M N
k k
k k 0
y n = b x n k a y n k
= =


(0.2)

Aceast ecuaie permite calculul unui eantion al ieirii pe baza a M
eantioane ale intrrii i a 1 N eantioane anterioare ale ieirii. Modul n care
este calculat ieirea (nti partea nerecursiv i apoi partea recursiv etc.) poate
fi reprezentat grafic sub forma unei structuri cu uniti de nmulire, adunare i
elemente de ntrziere.






5. STRUCTURI DE FILTRE NUMERICE



5.1.1. Forma direct

Pornind de la ecuaia cu diferene finite (0.2) operaiile prin care se
calculeaz ieirea filtrului pot fi reprezentate n structuri de tipul forma direct 1
sau forma direct 2 ca n figurile 5.1 i 5.2 prin simpla identificare a
coeficienilor
k
a i
k
b .



Figura 5.1. Forma direct 1

1
z
0
b
[ ] y n
1
z
1
b
1
z
2
b
N
b
[ ] x n
1
a
2
a
N
a


Figura 5.2 Forma direct 2

5. STRUCTURI DE FILTRE NUMERICE



5.1.2. Forma cascad

Funcia de transfer poate fi factorizat sub forma:


( )
1 * 1 1 2
0, 0, 1, 2,
1 * 1 1 2
1 1 1 1, 2,
(1 )(1 )
( )
(1 )(1 ) 1
P P P
k k k k k k
k
k= k= k= k k k k
b z z z z b b z b z
H z = = H z
p z p z a z a z


+ +
=
+ +
[ [ [
(0.3)

unde
k
z sunt zerourile iar
k
p sunt polii funciei de transfer grupai n perechi
complex conjugate pentru obinerea funciilor de transfer de ordin 2 cu
coeficieni reali ( )
k
H z . Dac funcia 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.

) (
1
z H ) (
2
z H ) (z H
P
[ ] x n
1
[ ] y n
2
[ ] y n
[ ] [ ]
P
y n y n =


Figura 5.3. Realizarea n cascad

Fiecare din filtrele componente, avnd o funcie de transfer de ordinul 2,
poate fi realizat n una din formele directe 1 sau 2.

Funciile MATLAB zp2sos, i tf2sos permit determinarea funciilor
de transfer de ordin 2 (Second Order Sections) pentru descompunerea n forma
cascad.


Sintaxe:

[SOS,G]=tf2sos(B,A)
- obine o matrice SOS care conine coeficienii seciunilor de ordin 2 pentru
factorizarea funciei de transfer ( ) H z . B reprezint vectorul coeficienilor
numrtorului ( ) B z iar A reprezint vectorul coeficienilor 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 conine coeficienii unei structuri de ordin 2.
( )
1 2
0, 1, 2,
1 2
1, 2,
1
k k k
k
k k
b b z b z
H z =
a z a z


+ +
+ +


5. STRUCTURI DE FILTRE NUMERICE



- G este un scalar care reprezint ctigul global al sistemului. Dac G nu este
specificat acesta este inclus n prima seciune.

[SOS,G]=zp2sos(Z,P,K)
- obine o matrice SOS care conine coeficienii seciunilor de ordin 2 pentru
factorizarea funciei de transfer ( ) H z . Z reprezint vectorul zerourilor, P
reprezint vectorul polilor, iar K reprezint ctigul descompunerii poli-
zerouri. Polii i zerourile trebuie s fie dai n perechi complex conjugate.
- G este un scalar care reprezint ctigul global al sistemului. Dac G nu este
specificat acesta este inclus n prima seciune.


5.1.3. Forma paralel

n acest caz se pornete de la descompunerea n fracii simple a funciei
( ) H z . Presupunnd coeficienii funciei de transfer ,
k k
a b eR, fraciile simple
(cu numitor de gradul 1) au n general coeficieni compleci. Grupnd ns
fraciile corespunztoare perechilor de poli complex conjugai, rezult funciile
( )
p
H z de gradul 2, cu coeficieni reali,
, ,
,
k p k p
a b eR. Funcia de transfer poate
fi scris sub forma:

( ) ( )
1
0, 1,
1 2
1 1
1, 2,
1
P P
p p
p
p p
p p
b b z
H z C C H z
a z a z


= =
+
= + = +
+ +

(0.4)

Se obine schema din figura 5.4.
1
[ ] y n
1
( ) H z
2
( ) H z
) (z H
p
2
[ ] y n
[ ]
p
y n
[ ] y n
[ ] x n
C

Figura 5.4. Realizarea n paralel

5. STRUCTURI DE FILTRE NUMERICE



Funcia MATLAB residuez realizeaz descompunerea n fracii simple
a funciei de transfer
( )
( )
( )
B z
H z
A z
= . Ea poate fi aplicat n dou sensuri:

[R,P,K]=residuez(B,A)
- descompune n fracii simple funcia
( )
( )
( )
B z
H z
A z
= definit de vectorii
coeficienilor B i A astfel:
1
1
1 2
1 1
1
( )
( ) 1 1
N
N
B z r r
k k z
A z p z p z


= + + + + +


- R i P sunt vectori coloan care conin reziduurile i, respectiv, polii.
- K este un vector linie pentru termenii liberi (dac ordinul numrtorului este
mai mare dect al numitorului).
- Dac
j
p este un pol multiplu de ordin m, descompunerea n fracii simple va
conine termeni de forma:
( ) ( )
1 1
2 1
1 1
1
1 1
j j j m
m
j
j j
r r r
p z
p z p z
+ +


+ + +




[B,A]=residuez(R,P,K)
- reface funcia de transfer ( ) H z din descompunerea n fracii simple.

Astfel, pentru obinerea descompunerii n structura paralel cu coeficieni
reali, se poate aplica urmtoarea metod (numai dac polii sunt ordonai n
perechi complex conjugate).

[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



5.1.4. Forma latice

Sinteza funciei de transfer a unui filtru RII:


( ) ( )
( )
( ) ( )
B z Y z
H z
A z X z
= = (0.5)

n forma latice se face completnd structura latice recursiv cu o structur n
scar (figura 5.5).

1
z 1
z
1
z
[ ] x n
N
k
1
k
N
k
1
k
1 N
k
1

N
k
N
c
1 N
c
1
c
0
c
[ ] y n
2 N
c

2
[ ] y n
1
[ ] y n

Figura 5.5. Realizarea n forma latice-scar

n figur apar pe lng nodurile de intrare [ ] x n i de ieire [ ] y n nc dou
noduri
1
[ ] y n i
2
[ ] y n . Se demonstreaz c funciile pariale de transfer asociate
acestor dou ieiri sunt:


1
1
( ) 1
( )
( ) ( )
Y z
H z
X z A z
= = (0.6)

1
2
2
( ) ( ) ( )
( )
( ) ( ) ( )
N
Y z z A z A z
H z
X z A z A z

= = =

(0.7)

Din ecuaia (0.6) rezult c n cazul unei funcii de transfer numai cu poli
structura latice nu are i structura n scar, iar ieirea filtrului va fi
1
[ ] y n .
n ecuaia (0.7) s-a notat cu ( ) A z

polinomul reciproc al numitorului ( ) A z


obinut din polinomul ( ) A z prin inversarea ordinii coeficienilor.


1
1 0
( )
N
N N
A z a a z a z

= + + +

(0.8)

5. STRUCTURI DE FILTRE NUMERICE



Evident funcia
2
( ) H z este o funcie trece-tot i aceasta poate fi sintetizat
n forma latice fr structura n scar, ieirea filtrului fiind
2
[ ] y n .
Sinteza structurii latice pentru o funcie de transfer RII se face pornind de la
coeficienii
0 1
, ,...,
N
a a a ai numitorului ( ) A z i se obin coeficienii de reflexie
1
,...,
N
k k dup algoritmul recursiv:

,
,
, ,
1,
2
1 1,1
for = 0:1:
end
for = : -1: 2
for =1:1: -1
1
end
end
N j j
i i i
i j i i i j
i j
i
j N
a a
i N
k a
j i
a k a
a
k
k a

=
=

=


Calculul coeficienilor scar
0
,...,
N
c c se face, de asemenea, recursiv
folosind i coeficienii
0 1
, ,...,
N
b b b ai numrtorului ( ) B z .
,
1
1, 2, , 0
N N
N
l l i i i l
i l
c b
l N N
c b c a

= +
=
=
=

for
end




Funcia MATLAB tf2latc calculeaz coeficienii structurii latice.

Sintaxe:

[K,C]=tf2latc(B,A)
- returneaz vectorul K ce conine coeficienii de reflexie
i
k i vectorul C ce
conine coeficienii structurii scar
i
c pentru un filtru RII cu coeficienii
numrtorului aflai n vectorul B i coeficienii numitorului aflai n vectorul
A normai la
0
a .

5. STRUCTURI DE FILTRE NUMERICE



K=tf2latc(B)
- returneaz vectorul K ce conine coeficienii de reflexie
i
k pentru un filtru
RFI cu coeficienii funciei de transfer aflai n vectorul B normai la
0
b .

K=tf2latc(1,A)
- returneaz vectorul K ce conine coeficienii de reflexie
i
k pentru un filtru
RII numai cu poli, cu coeficienii numitorului aflai n vectorul A normai la
0
a .

Observaie.
Dac n urma calculelor unul din coeficienii de reflexie va fi egal cu 1 atunci
funcia tf2latc va genera eroare (deoarece termenul
2
1
i
k care apare la
numitor este 0).

Invers, se poate obine funcia de transfer pornind de la coeficienii de reflexie i
coeficienii structurii scar folosind funcia latc2tf. Detalii se pot obine cu
help latc2tf.


Exemplu:
Fie sistemul RII avnd funcia de transfer:
1 1 1 2
1 3 4
( ) (0.5 )(1 0.5 )(1 1.2 1.8 )
( )
( ) 1 0.5 1.2 0.5
B z z z z z
H z
A z z z z


+ + +
= =
+ + +

Sintetizai structurile pentru formele cascad, paralel i latice.

// Polinomul de la numitor este:
a=[1 0.5 0 1.2 0.5];

// Polinomul de la numrtor se obine din zerourile funciei de transfer.
z1=[-2; -0.5];
z2=roots([1 -1.2 1.8]);

// Deoarece primul termen liber este 0.5, polinomul trebuie nmulit 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

Rezult descompunerea n cascad:
( )
1 2 1 2
1 2 1 2 1 2
1 2.5 1 1.2 1.8
( ) ( ) 0.5
1 1.52 0.456 1 1.02 1.095
z z z z
H z G H z H z =
z z z z


+ + +
=
+ + +


// 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

Se observ c exist reziduuri i poli compleci. Deoarece dorim o structur cu
coeficieni reali vom grupa perechea de valori complex conjugate ntr-o funcie
de transfer de ordin 2 cu coeficieni reali:

[b2,a2]=residuez(r(2:3),p(2:3),[])

b2 =
-1.2659 0.3278
a2 =
1.0000 -1.0206 1.0955

Rezult descompunerea n paralel:
1 2 4
1 1
2 1 4
1
1 1 2 1
( )
( )
( ) 1 1
0.65 1.26 0.32 0.58
3
1 1.1 1 1.02 1.09 1 0.41
r B z r
H z k
A z p z p z
z
z z z z


= + + + =

+
= + + +
+ + +


5. STRUCTURI DE FILTRE NUMERICE



// Coeficienii formei latice se obin direct:
[k,c]=tf2latc(b,a)

k =
0.3061
-0.2794
1.2667
0.5000

c =
-2.3898
-1.4985
-0.2333
2.0000
1.5000

Observaii:
- Valorile exacte ale coeficienilor obinui mai sus au mult mai multe zecimale
dect cele afiate n MATLAB n formatul short. n practic, din cauza
reprezentrii numerelor pe un numr finit de bii apar diferene (trunchieri)
ale valorilor coeficienilor 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 Schr-Cohn pentru
coeficienii de reflexie k se observ ca coeficientul
3
k e supraunitar.


E1. Exerciii:
Fie sistemele RII avnd funciile de transfer:
1.
1 2 3 4
1 2 3 4
2 3.6 1.3 0.4 0.2
( )
1 2.8 3.15 1.75 0.425
z z z z
H z =
z z z z


+ +
+ +

2.
1 2 3 3
2 4 6
(1 2 3 4 )(1 )
( )
1 0.8 0.66 0.35
z z z z
H z
z z z


+
=
+ +

3.
1 2 3 4
1
( )
1 1.27 1.19 1.18 0.4
H z
z z z z

=
+ + +

4.
1 2 3
1 2 3
0.4 0.7 0.175
( )
1 0.175 0.7 0.4
z z z
H z
z z z


+
=
+

5.
0.95 / 4 0.95 / 4 1.05 / 4 1.05 / 4
/ 4 / 4 / 4 / 4
( 0.9 )( 0.9 )( 0.9 )( 0.9 )
( )
( 0.95 )( 0.95 )( 0.9 )( 0.9 )
j j j j
j j j j
z e z e z e z e
H z
z e z e z e z e
t t t t
t t t t



=


Sintetizai i desenai structurile pentru formele direct 1 i 2, cascad, paralel,
latice.


5. STRUCTURI DE FILTRE NUMERICE



5.2. Interfee grafice

5.2.1. Mediul de dezvoltare GUIDE

GUIDE reprezint un mediu de dezvoltare specific Matlab, n care se pot crea cu
uurin interfee grafice (Graphical User Interface Development Environment). Se
lanseaz tastnd la linia de comand:

guide

n urma lansrii acestei comenzi, pe ecran va apare urmtoarea fereastr, n care
utilizatorul poate alege un anumit tip de interfa grafic n funcie de cerinele de
proiectare; de obicei se alege prima opiune Blank GUI (Default).



GUIDE ofer posibilitatea de a alege butoane dintr-o list predefinit,
poziionndu-le pe suprafaa grafic (sau canvas) cu drag and drop. Pe msur
ce utilizatorul alege i aeaz pe canvas diverse obiecte i dup ce salveaz
interfaa grafic creat sub forma unui fiier cu extensia .fig, GUIDE creeaz
automat un fiier cu extensia .m care poate fi vizualizat selectnd din meniu
View/M-File Editor. Acest fiier conine toate funciile necesare rulrii unei
interfee grafice n Matlab ntr-o form iniial, adic needitate. Aceste funcii
trebuie completate cu codul Matlab corespunztor aplicaiei care se dorete a fi
creat.
De exemplu, pentru a putea vedea funcia chemat atunci cnd se d click pe un
buton de tip pushbutton se d click-dreapta pe butonul respectiv i se alege din
meniul afiat opiunea View Callbacks/Callback, ca n figur:

5. STRUCTURI DE FILTRE NUMERICE





5.2.2. Interfaa grafic PDS_gui

Se deschide exemplul de interfa grafic PDS_gui alegnd n fereastra iniial
a mediului GUIDE, GUIDE Quick Start, tab-ul Open Existing GUI i selectnd
fiierul PDS_gui.fig. Va aprea urmtoarea fereastr:



Pentru a putea rula interfaa grafic, se selecteaz opiunea Tools/Run din meniu,
sau se apas butonul verde din meniul Toolbar.

E2. Exerciii:
1. Pentru exemplul PDS_gui s se studieze fiierul cu acelai nume i
extensia .m, accesibil direct din meniul Toolbar de la butonul . Se va alctui

5. STRUCTURI DE FILTRE NUMERICE



o list cu numele tuturor funciilor existente i se va stabili corespondena
obiect-funcie acolo unde se poate. De exemplu, primele patru funcii sunt:

function varargout = PDS_gui(varargin)
function PDS_gui_OpeningFcn(hObject, eventdata, handles, varargin)
function varargout = PDS_gui_OutputFcn(hObject, eventdata, handles)
function inSignal_Callback(hObject, eventdata, handles)

iar ultima funcie corespunde butonului de editare de text cu eticheta inSignal n
care se introduce semnalul s.
Prima funcie nu se editeaz, ea reprezentnd o prim etap de iniializare. A
doua funcie, PDS_gui_OpeningFcn, este apelat imediat dup rularea interfeei
grafice (Run), nainte ca utilizatorul s poat iniia vreo aciune asupra acesteia.
Aceasta reprezint o a doua etap de iniializare, n care proiectantul i declar
i definete variabilele necesare.

Observaie:
- Pentru a ti ce etichet are fiecare buton n parte, se d dublu-click de
exemplu pe butonul de editare a semnalului s, deschiznd astfel fereastra
Inspector (sau Property Inspector). Aceasta conine toate proprietile
obiectului curent, adic ale butonului de editare de text n acest caz.
Eticheta obiectului se gsete n cmpul corespunztor proprietii Tag.
Observai ce alte proprieti mai au obiectele din exemplul dat.

2. S se studieze cu ajutorul Help-ului din Matlab semnificaiile
urmtoarelor noiuni: GUI Data i handles Structure. Pentru aceasta se va apela
la meniul Help/Product Help al principalei ferestre Matlab. S se noteze pe scurt
aceste semnificaii.

3. Reluai exerciiul 1 pentru celelalte dou interfee grafice cu care lucreaz
PDS_gui: gui_player.fig i gui_filter.fig. Corespondenele dintre funcii i
obiecte se afl dnd click-dreapta pe obiectul respectiv i alegnd din meniul
afiat opiunea View Callbacks/Callback.

E3. Exerciii:
1. Pentru interfaa grafic PDS_gui, s se completeze funcia callback
corespunztoare butonului Spectrogram astfel nct, atunci cnd acest buton este
apsat, s fie afiat spectrograma semnalului s dat ca Input signal. S se
verifice pentru un semnal s de tip sinusoidal cu frecvena de 800Hz, eantionat
cu Fs = 2kHz i generat pe durata 0,5secunde, de amplitudine unitar.

Observaie:
- Dup completarea callback-ului, salvarea modificrilor, lansarea n
execuie cu Tools/Run, editarea cmpurilor Input signal i t cu valorile

5. STRUCTURI DE FILTRE NUMERICE



cerute, trebuie apsat butonul Signal to test.wav file. Astfel, semnalul dat
este scris ntr-un fiier test.wav care apoi se va deschide cu Open din
meniul Toolbar al interfeei grafice.

2. Deschidei pe rnd fiierele baby.wav i speech.wav i vizualizai formele
de und n timp, spectrele semnalelor i spectrogramele. Pentru formele de und
n timp folosii opiunile Zoom in i Zoom out din Toolbar-ul interfeei grafice.
Ce tip de semnal corespunde vocalei a ? Vocala a se poate identifica cu uurin
n baby.wav.

E4. Exerciii:
1. Pentru interfaa grafic gui_player s se identifice funcia callback
asociat obiectului pop-up meniu, avnd eticheta signSelect. n aceast funcie,
primele dou linii sunt:

str = get(hObject, 'String');
val = get(hObject,'Value');

Identificai semnificaia acestor linii cutnd n Help sintaxa funciei get. Pentru
aceasta tastai n Command Window comanda

help get

Cu ce se poate nlocui parametrul hObject al acestor funcii fr a schimba
semnificaia i comportamentul lor?

2. n aceeai funcie callback de la exerciiul anterior este creat un player
asociat unui singur semnal, fie cel original fie cel filtrat. Studiai funcia
audioplayer utilizat pentru a crea player-ul; n Matlab/Help/Product Help
cutai documentaia referitoare la audioplayer.

E5. Exerciii:
1. La interfaa 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 csua 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?

2. n urmtoarele dou figuri este exemplificat rezultatul filtrrii trece jos i
apoi trece sus a semnalului baby.wav. Explicai modificrile aprute n
spectrogram.

5. STRUCTURI DE FILTRE NUMERICE







3. Reluai proiectarea filtrului pentru un filtru de tip eliptic, nlocuindu-l pe
cel de tip Butterworth existent. Folosii urmtorii parametri: Fs = 25kHz,
F
e1
=4500Hz, F
e2
=6000Hz, F
b1
=3500Hz, F
b2
=7000Hz. Filtrai semnalul
speech.wav i observai diferenele.
4. Reluai filtrele de la exerciiile 2 i 3 i ascultai semnalele original i
filtrat cu player-ul din interfaa grafic gui_player.
6. Creai o funcie nou care s primeasc ca parametri de intrare toi
parametrii setai n gui_filter pentru a putea proiecta un filtru RII. Funcia
trebuie s returneze coeficienii b i a ai filtrului. Aceast funcie va fi apelat de
callback-urile asociate obiectelor cu etichetele filtParam i filtType.

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