You are on page 1of 8

Cap. 3. Filtre numerice.

Aplicaţii în MATLAB
3.1. Introducere teoretică

Fig. 1

Expresia ieşirii unui filtru numeric, fig.1, în domeniul n (timp discret), este:
y (n) = b0 x(n) + b1 x(n − 1) + ... + bN x(n − N ) (1)
+ a1 y (n − 1) + a2 y (n − 2) + ... + aN y (n − N )
unde x(n) este secvenţa de intrare, iar N este ordinul filtrului.
Dacă coeficienţii a1 = a2 = ... = aN = 0 , filtrul se numeşte de tip FIR (Finite Impulse
Response), iar dacă coeficienţii ai ≠ 0, i = 1,..., N , filtrul se numeşte de tip IIR
(Infinite Impulse Response).
În primul caz, dacă intrarea este un impuls unitar, ieşirea se va anula după un număr
de impulsuri egal cu ordinul filtrului.
În al doilea caz, dacă intrarea este un impuls unitar, ieşirea nu se va anula după un
număr de impulsuri egal cu ordinul filtrului.
Dacă în ecuaţia (1) se aplică transformata Z, se obţine:
Y ( z )(1 − a1 z −1 − a2 z −2 − ... − aN z − N ) = X ( z )(b0 + b1 z −1 + ... + bN z − N ), (2)
sau,
Y ( z ) b0 + b1 z −1 + ... + bN z − N (3)
H ( z) = = .
X ( z ) 1 − a1 z −1 − ... − aN z − N
H(z) este funcţia de transfer a unui filtru numeric. Dacă filtrul este de tip FIR, în
ecuaţia (3) numitorul este 1.
f
Dacă în ecuaţia (3) se face substituţia z = e jΩ ; Ω = 2π
fe
unde Ω ∈ [ 0, π ] reprezintă frecvenţa numerică, atunci H (e jΩ ) reprezintă răspunsul în
frecvenţă al filtrului (se mai notează şi H (Ω) ).
H (e jΩ ) reprezintă caracteristica magnitudine-frecvenţă a filtrului.
arg { H (e jΩ )} reprezintă caracteristica fază-frecvenţă a filtrului.
Dacă secvenţa de intrare în filtru este
x(n) = A cos(Ω0 n + ϕ ) , atunci ieşirea filtrului va fi:
y (n) = A H (e jΩ0 ) ⋅ cos(Ω 0 n + ϕ + θ ),
{
unde θ = arg H (e jΩ0 ) }

1
Rezultă că modulul lui H (e jΩ ) la frecvenţa Ω0 dă modificarea amplitudinii lui y (n) ,
iar argumentul lui H (e jΩ ) la frecvenţa Ω0 dă modificarea fazei lui y (n) .
Dacă x(n) conţine o sumă de cosinusoide cu frecvenţele Ω1, Ω2 şi Ω3, ieşirea va
conţine suma celor trei cosinusoide, cu amplitudinea şi faza modificate în funcţie de
valoarea lui H (e jΩ ) la frecvenţele Ω1, Ω2 şi Ω3.
Deoarece H (e jΩ ) reprezintă o transformată Fourier, este periodică cu perioada 2π/Te,
porţiunea de interes a acestei caracteristici este până la π/Te= πfe (ca frecvenţă
unghiulară), sau πfe/2π= fe/2 ca şi frecvenţă analogică.
f f
Ştiind că Ω = 2π =π ,
fe f e

2
se notează frecvenţa normalizată fn
f
fn = , f ∈ [0,1] .
fe n
2
În concluzie, porţiunea de interes a caracteristicii de frecvenţă a unui filtru este între:
[0, π ] în funcţie de frecvenţa numerică Ω,
[0, f e / 2] în funcţie de frecvenţa de analogică f, unde fe/2 se mai numeşte frecvenţa
Nyquist.
[0,1] în funcţie de frecvenţa normalizată fn.
În funcţie de coeficienţii ai şi bi, filtrele pot avea diferite forme ale caracteristicilor
magnitudine-frecvenţă: trece-jos, trece-sus, trece-bandă şi opreşte-bandă.
În fig.2 se prezintă caracteristica magnitudine-frecvenţă a unui filtru numeric de tip
trece-jos.

Fig.2
Caracteristica din fig.2 poate fi prezentată şi în coordonate semilogaritmice, dacă se
aplică logaritmul zecimal mărimii de pe axa verticală. Se obţine caracteristica din
fig.3. Tot în fig.3, se prezintă şi caracteristica fază-frecvenţă.

2
Fig.3

Privire comparativă între filtrele FIR şi IIR


1. Filtrele IIR au cararcteristici similare cu cele ale FIR (lăţimea benzilor de tranziţie,
atenuările) dar pentru ordine de circa 4 ori mai mici, de exemplu 10 pentru IIR şi 40
pentru FIR. Acest lucru înseamnă aproximativ de 2 ori mai puţine calcule pentru un
filtru IIR (a se vedea expresia ieşirilor celor două filtre), dacă considerăm doar
înmulţirile, cele care consumă timp mai mult.
2. Filtrele FIR au caracteristică de fază liniară în funcţie de frecvenţă, în banda de
trecere, în timp ce filtrele IIR au caracteristica neliniară (fig.3). De aceea, pentru
filtrele IIR, în cazul când semnalul de intrare conţine componente cu frecvenţe
diferite, rezultă la ieşire întârzieri diferite, ca număr de perioade, pentru semnalele de
frecvenţe diferite, distorsionând semnalul de la ieşire.
În continuare se detaliază problema fazei liniare de la filtrele FIR.
Astfel, dacă faza este liniară înseamnă că respectă relaţia
{ }
arg H (e jΩ ) = ϕ (Ω) = − kΩ ,
unde k este o constantă, în particular fiind egală cu N/2, N fiind ordinul filtrului.
Valoarea negativă a fazei (a se vedea şi fig.3) înseamnă că ieşirea este întârziată faţă
de intrare, sau faza poate fi privită ca o întârziere.
Deoarece ϕ (Ω) este exprimată în radiani, iar 2π radiani reprezintă o perioadă,
înseamnă că întârzierea realizată, exprimată în număr perioade va fi
nr per = ϕ (Ω) /( −2π ) = NΩ /(4π ) .

3
Deoarece Ω = 2πf / f e , această întârziere devine
N 2πf Nf
nr per = = ,
4π f e 2 fe
ceea ce înseamnă că întârzierea, în număr de perioade, este proporţională cu
frecvenţa.
Întârzierea poate fi exprimată şi în unităţi de timp ca
Nf 1 N
∆t = nr per ⋅ T = = Te ,
2 fe f 2
adică, întârzierea realizată nu depinde de frecvenţă, fiind egală cu un număr de
eşantioane egal cu jumătate din ordinul filtrului.
Exemplu:
Se presupune că pentru un filtru FIR, la frecvenţa f, faza φ(Ω) este o perioadă,
T=1/f, sau 2π.
Rezultă că la frecvenţa 2f, faza φ(Ω) va fi două perioade, 2(1/2f)=1/f, sau 4π.
Dacă la intrarea filtrului FIR se aplică suma semnalelor x1 şi x2, având frecvenţele f1=f
şi, respectiv, f2=2f, fig.4, se observă că cele două componente ale semnalului de ieşire,
y1 şi y2, păstrează acelaşi defazaj ca la intrare, adică forma semnalului nu a fost
modificată. Dacă faza ar fi neliniară, adică întîrzierea semnalului y2 ar fi mai mare
(sau mai mică) decât 4π, prin însumarea lui y1 si y2 se va obţine un semnal diferit faţă
de x1+x2.
Ca şi dezavantaj, trebuie menţionat faptul că întârzierea produsă de filtrele
FIR, (−N/2) creşte cu ordinul filtrului.

Fig. 4

3.2. Aplicaţii în MATLAB


Funcţiile care se prezintă în continuare fac parte din librăria Signal Processing
Toolbox a MATLAB-ului.

3.2.1. Funcţii generale pentru filtrare şi obţinerea caracteristicilor magnitudine-


frecvenţă şi fază-frecvenţă.

4
Se presupune că se cunosc vectorii cu coeficienţii filtrului:
b = [b0 b1 b2 …bN], coeficienţii numărătorului funcţiei de transfer,
a = [a0 −a1 −a2 …−aN], coeficienţii numitorului, cu a0 = 1 (la filtrele FIR vectorul a
conţine doar scalarul 1).
Dacă x este vectorul cu semnalul de intrare al filtrului numeric, atunci
semnalul de ieşire este conţinut în vectorul y, care se determină prin funcţia filter( ),
y = filter(b, a, x).

Funcţie pentru obţinerea răspunsului la impuls


[H,t] = impz(b, a).
[H,t] = impz(b, a,N).
[H,t] = impz(b, a, N, fe).
H reprezintă un vector cu elemetele răspunsului la impuls, iar t un vector cu
momentele de timp la care au fost calculate valorile răspunsului. N reprezintă numărul
de puncte în care se va calcula răspunsul la impuls, iar
fe reprezintă frecvenţa de eşantionare,

Pentru determinarea caracteristicilor magnitudine-frecvenţă şi fază-frecvenţă


se foloseşte funcţia freqz( ),
[h, fr] = freqz(b, a, Np, fe), unde:
Np reprezintă numărul de puncte în care se va calcula caracteristica de transfer
a filtrului, H(z), pentru z = exp(jΩ), cu Ω =2πf / fe,
fe reprezintă frecvenţa de eşantionare,
fr reprezintă un vector cu Np elemente având valorile (în intervalul 0...fe/2):
fe 2 fe 3 fe ( Np − 1) fe
0, , , ,..., ,
2 Np 2 Np 2 Np 2 Np
iar h reprezintă un vector cu Np elemente conţinând valorile funcţiei H(z),
calculate pentru valorile frecvenţei analogice f conţinute în vectorul fr.
O altă formă de utilizare a funcţiei freqz( ) este
[h1, w] = freqz(b, a, Np), unde
w reprezintă un vector cu Np elemente având valorile (în intervalul 0...π):
π 2π 3π ( Np − 1)π
0, , , ,...,
Np Np Np Np
iar h1 reprezintă un vector cu Np elemente conţinând valorile funcţiei H(z), pentru
valorile frecvenţei numerice Ω conţinute în vectorul w.
În aceste condiţii, pentru trasarea caracteristicii magnitudine-frecvenţă a
filtrului, există două variante:
plot(fr, abs(h)), caz în care pe axa orizontală este frecvenţa anlogică, cu valori
între 0 şi fe / 2, respectiv,
plot(w, abs(h)), caz în care pe axa orizontală este frecvenţa numerică, cu valori
între 0 şi π.
O caracteristică semilogaritmică (cu dB pe axa magnitudinii), având de
exemplu frecvenţa analogică pe axa orizontală, se poate obţine prin
plot(fr, 20*log10(abs(h))).
Pentru trasarea caracteristicii fază-frecvenţă se poate folosi funcţia angle( ),
care furnizează argumentul unui număr complex, în radiani, modulo 2π, astfel,
plot(fr, 180*angle(h)/π),

5
unde înmulţirea cu coeficientul 180/π s-a făcut pentru ca faza să fie exprimată în
grade. Pentru ca faza să fie crescătoare în valoare absolută (să nu mai fie modulo 2π),
se poate folosi funcţia unwrap(angle(h)).
În fine, dacă în program se scrie direct
freqz(b, a, np, fe),
se va deschide automat o fereastră cu două grafice: caracteristica magnitudine-
frecvenţă, în coordonate semilogaritmice şi cea de fază.

3.2.2. Funcţii pentru obţinerea coeficienţilor filtrelor

Aceste funcţii permit determinarea coeficienţilor filtrelor sub forma vectorilor


b şi a.
a) pentru filtre IIR
Filtre Butterworth (au caracteristică plată în banda de trecere, banda de
tranziţie nu foarte îngustă, iar atenuarea în banda de oprire este mare).
Funcţia folosită este butter( ),
[b, a] = butter(ord, wn, opţiuni), unde:
ord reprezintă ordinul filtrului, având valori uzuale în gama 10…15,
wn reprezintă frecvenţa de tăiere normalizată, f / (fe/2), cu valori între 0 şi 1;
pentru filtrele de tip trece jos şi trece sus, wn este un scalar, iar pentru cele de tip trece
bandă şi opreşte bandă wn este un vector linie cu 2 elemente, reprezentând banda de
trecere, respectiv cea de tăiere; toate frecvenţele de tăiere sunt date pentru o atenuare
de 1/√2 (−3dB, dacă caracteristica este considerată în coordonate semilogaritmice), în
caracteristica magnitudine-frecvenţă.
opţiuni:
-dacă acest câmp nu conţine nici un caracter, filtrul este trece jos sau trece
bandă, funcţie de forma argumentului wn;
-dacă conţine caracterele ‘high’, filtrul este trece sus,
-dacă conţine caracterele ‘stop’, filtrul este opreşte bandă.
Se precizează că pentru filtrele trece bandă şi opreşte bandă, filtrul obţinut este
de ordinul 2ord, adică vectorii b şi a au 2ord +1 elemente.
Pentru obţinerea ordinului minim necesar ca un filtru să aibe caracteristici
impuse referitoare la banda (benzile) de tranziţie se foloseşte funcţia buttord(), astfel:
[ord, wn] = buttord(wp, ws, Rp, Rs), unde
Rp reprezintă atenuarea, în banda de trecere, la wp, în dB,
Rs reprezintă atenuarea, în banda de oprire, la ws, în dB,
iar ord şi wn, rezultatele furnizate de această funcţie, au aceeaşi semnificaţie
ca şi la funcţia butter.
Exemple:
1. Pentru un filtru trece jos, este necesar ca wp<ws.
2. Pentru un filtru trece sus, este necesar ca wp>ws.
3. Pentru un filtru trece bandă este necesar ca elementele vectorului wp să fie
intercalate între cele ale vectorului ws, de exemplu wp=[0.5 0.7] şi ws=[0.4 0.8], ca în
fig.5. Atenuările pot fi de exemplu, Rp=1 şi Rs=20 (valorile sunt considerate în dB,
având de fapt, cum se vede şi în figură, semnul minus).

6
Fig. 5

4. Pentru un filtru opreşte bandă este necesar ca elementele vectorului ws să


fie intercalate între cele ale vectorului wp, de exemplu wp=[0.3 0.7] şi ws=[0.35 0.65].
Apoi, pentru toate cazurile, având parametrii ord şi wn, se determină
coeficienţii filtrului cu funcţia
[b, a] = butter(ord, wn, opţiuni).

Filtre Chebyshev
Funcţia pentru proiectarea filtrului Chebyshev de tip 1:
[b, a] = cheby1(ord, Rp, wn, opţiuni), unde:
Rp reprezintă atenuarea, în banda de oprire, la frecvenţa de tăiere normalizată
wn.
Ceilalţi parametri ai funcţiei au aceleaşi semnificaţii ca şi la funcţia butter.
Această funcţie permite proiectarea unui filtru care conţine oscilaţii (ripluri) în
banda de trecere. În banda de oprire caracteristica este plată. Banda de tranziţie este
mai abruptă decât la un filtru Butterworth.
Funcţia pentru proiectarea filtrului Chebyshev de tip 2:
[b, a] = cheby2(ord, Rs, wn, opţiuni), unde:
Rs reprezintă atenuarea, în banda de trecere, la frecvenţa de tăiere normalizată
wp.
Această funcţie permite proiectarea unui filtru care conţine oscilaţii (ripluri) în
banda de oprire. În banda de trecere caracteristica este plată. Banda de tranziţie nu
este aşa abruptă ca la un filtru Chebyshev de ordinul 1.

De asemenea, există o funcţie pentru realizarea unui filtru IIR cu caracteristică


arbitrară,
[b, a] = yulewalk(ord, fr, m), unde
fr este un vector conţinând frecvenţe normalizate cu valori crescătoare între 0
(prima) şi 1 (ultima),
m reprezintă un vector cu aceeaşi dimensiune ca şi fr, conţinând valorile dorite
în caracteristica magnitudine-frecvenţă (între 0 şi 1), la frecvenţele corespunzătoare
din vectorul fr.
Exemplu:

7
Dacă fr =[0 0.1 0.15 0.25 0.3 0.5 0.55 0.65 0.75 1 ]
m =[0 0 1 1 0 0 1 1 0 0 ],
atunci caracteristica ideală este prezentată în fig. 6.

Fig. 6

b) Pentru filtre FIR


Funcţia fir1( ) se foloseşte ca în continuare
b = fir1(ord, wn, opţiuni),
cu argumentele având aceeaşi semnificaţie ca şi la filtrul Butterworth. Ordinul ord are
valori uzuale în gama 30...50. De remarcat că frecvenţa de tăiere normalizată este
considerată la o atenuare de 1/2 în caracteristica magnitudine frecvenţă.
În acest caz, filtrarea se face prin
y =filter(b, 1, x).
Pentru obţinerea unei caracteristici arbitrare se poate folosi funcţia fir2
b = fir2(ord, fr, m),
cu semnificaţii identice cu cele de la funcţia yulewalk( ).

You might also like