background image

 
 
 
 
 
 
 
 
 
 
 
 

Metody projektowania wybranych filtrów 

cyfrowych 

 
 
 

Instrukcja laboratoryjna 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Opracował: 
 
 
………………………………….………….. 
Imię i nazwisko, numer grupy szkoleniowej 
 

background image

 
 

1. Teoria 

Filtr cyfrowy jest liniowym układem dyskretnym niezmiennym względem przesunięcia, zrealizowany              
za pomocą arytmetyki o skończonej precyzji. Projektowanie filtrów cyfrowych obejmuje trzy etapy: 
 
1. określenie pożądanych właściwości układu, 
2. aproksymację tych właściwości za pomocą przyczynowego układu dyskretnego, 
3. realizację układu za pomocą arytmetyki o skończonej precyzji. 
 
Równanie filtru opisuje jego transmitancja dyskretna w postaci: 

)

...

/(

)

...

(

)

(

1

1

0

1

1

0

m

m

m

n

n

n

a

z

a

z

a

b

z

b

z

b

z

H

+

+

+

+

+

+

=

 

lub jako równoważne równanie różnicowe: 

=

=

=

N

k

N

k

k

n

k

k

n

k

k

y

a

x

b

y

0

1

 

Jeżeli funkcja ma mianownik równy 1 to filtr jest określony jako FIR (ang. Finite Impulse Response) . 
Jeśli funkcja ma licznik równy 1, to filtr jest określony jako IIR (ang. Infinite Impulse Response). 

Zwyczajowo projektowanie filtrów cyfrowych typu NOI jest w istocie przekształcaniem filtru 

analogowego w filtr cyfrowy spełniający założone wymagania.  
Metoda niezmienności impulsowej – zakłada się, ze odpowiedź impulsowa filtru cyfrowego jest 
równa ciągowi próbek równomiernie pobranych z odpowiedzi impulsowej filtru analogowego. Metodę 
tę stosuje się często nie dlatego, aby odtwarzać kształt odpowiedzi impulsowej, ale dlatego, że 
zapewnia ona w przypadku analogowego filtru wąskopasmowego charakterystykę częstotliwościową 
filtru cyfrowego, która dobrze aproksymuje charakterystykę częstotliwościową filtru analogowego. 
Projektowanie oparte na numerycznym rozwiązywaniu równań różniczkowych  – rozważmy 
transmitancję układu analogowego, gdzie x

a

(t) jest sygnałem wejściowym, y

a

(t) sygnałem wyjściowym, 

X

a

(s) i Y

a

(s) zaś odpowiednio ich transformatami Laplace’a: 

)

(

)

(

)

(

0

0

s

X

s

Y

s

c

s

d

s

H

a

a

N

k

k

k

M

k

k

k

a

=

=

=

=

, układ analogowy mający transmitancję H

a

(s) może być 

równoważnie opisany za pomocą równania różniczkowego: 

=

=

=

N

k

M

k

k

a

k

k

k

a

k

k

dt

t

x

d

d

dt

t

y

d

c

0

0

)

(

)

(

, projektowanie oparte na numerycznym rozwiązywaniu 

równań różniczkowych polega na zastąpieniu pochodnych w powyższym równaniu różnicami 
skończonymi.  
Projektowanie w oparciu o transformację dwuliniową. 

Metoda ta jest oparta na 

całkowaniu równania różniczkowego i wykorzystaniu numerycznej aproksymacji całki. 

Odwracalna transformacja wyrażona równaniem 

1

1

1

1

2

+

=

z

z

T

s

 jest znana jako transformacja 

dwuliniowa.  
 

2. Zadania laboratoryjne 

 
LAB_3_1 :  
PROJEKTOWANIE FILTRU IIR NA PODSTAWIE PROTOTYPU ANALOGOWEGO 
 
Celem ćwiczenia jest zapoznanie z metodą projektowania filtru IIR w oparciu o transformacje 
jego prototypu analogowego. 
 

background image

W projektowaniu filtru cyfrowego z użyciem prototypu analogowego praktyką jest 
projektowanie filtru dolnoprzepustowego a następnie jego transformacja do żądanej postaci 
(środkowoprzepustowy, górnoprzepustowy lub środkowozaporowy). W rozwiązaniu 
zastosowanym w Matlabie procedura projektowania składa się z następujących etapów: 

a)  Określenie specyfikacji prototypu filtru na podstawie wymagań charakterystyki 

częstotliwościowej (

ω

p

ω

s

, R

p

, R

s

b)  Projekt znormalizowanego prototypu analogowego N-tego rzędu o częstotliwości 

odcięcia równej 1. 

c)  Transformacja otrzymanego opisu znormalizowanego filtru dolnoprzepustowego do 

odpowiedniego typu filtru o częstotliwościach rzeczywistych. 

d)  Zastosowanie transformacji biliniowej

1

1

2

+

=

s

s

s

f

s

, gdzie f

s

 oznacza częstotliwość 

próbkowania, dla przekształcenia prototypu analogowego w cyfrowy.  

 
1.  Uruchomić Matlaba 
2.  Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file 
3.  Zaprojektować kilka typów filtrów dolnoprzepustowych o rzędach: 10, 20, 50 o różnych 

typach podstawiając odpowiednie wartości do wzoru: 

 
[l,m]= butter(N,Wn)   

- filtr Butterwortha 

[l,m]= cheby1(N,R

p

,W

n

)  

– filtr Czebyszewa I 

[l,m]= cheby2(N,R

s

,W

n

)  

– filtr Czebyszewa II 

[l,m]= ellip(N,R

p

,Rs,Wn)   – filtr eliptyczny (Cauera) 

 

Argumentami wywołania funkcji jest: N rząd filtru, W

n

 – znormalizowana 

częstotliwość odcięcia filtru, R

p

 – amplituda tętnień w paśmie przepustowym (w dB), R

s

 – 

amplituda tętnień w paśmie zaporowym (w dB). W wyniku takiego wywołania otrzymuje się 
dwa wektory wyjściowe l i m, zawierajęce współczynniki wielomianu licznika i mianownika. 
Zmieniając jedynie parametry wyjściowe funkcji z [l,m] na [z,p,k] lub [A,B,C,D], otrzymać 
można inne formy opisu transmitancji filtru. Przedstawiony sposób wywołania ma jedynie 
zastosowanie do filtrów dolnoprzepustowych. W przypadku filtrów górnoprzepustowych, 
środkowoprzepustowych i górnozaporowych należy odpowiednio zmodyfikować  parametry           
i linie wywołania funkcji.  

Przy filtrze środkowoprzepustowym jako częstotliwość odcięcia W

n 

wystarczy podać 

wektor W

n

=[W

1

 W

2

], w których W

1

 i W

2

 oznaczają dolną i górną częstotliwość zaporową, a 

linia wywołania funkcji (na przykładzie filtru Butterwortha) ma postać: 

 

[l,m] = butter(N,Wn, ‘Stop’) 
 
Dla ułatwienia procesu projektowania można skorzystać z dodatkowych m-plików 
funkcyjnych określających wielkości: W

n

 (częstotliwość znormalizowana) i N rząd filtru 

Na podstawie wymagań odczytanych z zadanej charakterystyki częstotliwościowej filtru, to 
jest W

p

, W

s

, R

p

 oraz R

s . 

 
1.  Uruchomić Matlaba 
2.  Otworzyć okno edycyjne m-pliku funkcyjnego: File -> New -> M-file 
3.  Zaprojektować kilka typów filtrów dolnoprzepustowych (ich rząd oraz znormalizowaną 

częstotliwość odcięcia) podstawiając odpowiednie wartości do wzoru: 

 
[N, W

n

]=buttord(W

p

,W

s

,R

p

,R

s

)  

– filtr Butterwortha 

[N, Wn]=cheb1ord(W

p

,W

s

,R

p

,R

s

)   – filtr Czebyszewa I 

background image

[N, W

n

]=cheb2ord(W

p

,W

s

,R

p

,R

s

)   – filtr Czebyszewa II 

[N, W

n

]=ellipord(W

p

,W

s

,R

p

,R

s

)  

– filtr Cauera 

4.  Wyrysuj charakterystyki tak zaprojektowanych filtrów np. 
 
[l,m]=butter(N,W

n

[h1,w1]=freqz(l,m,128); 
subplot(2,1,1), plot(w1/pi, abs(h1)) 
 
Zanotuj wnioski po przeanalizowaniu w ten sposób otrzymanych charakterystyk. Czy dla 
wymienionych typów filtrów selektywność filtru jest taka sama dla tych samych rzędów 
filtrów? 
 
LAB_3_2:  
PROJEKTOWANIE BEZPOŚREDNIE FILTRÓW TYPU IIR 
 
W projektowaniu bezpośrednim filtru typu IIR wykorzystuje się metodę Yule’a-Walkera 
dobierającą optymalizacyjnie współczynniki filtru w taki sposób, aby jego charakterystyka 
amplitudowa najlepiej pokrywała się z zadaną charakterystyką amplitudową mag(f), w której 
f

 jest wektorem określającym punkty częstotliwościowe, a mag wartości amplitudy w tych 

punktach. Funkcja do projektowania bezpośredniego nosi nazwę yulewalk
 
Wektor f określa punkty częstotliwościowe od 0 do 1 (1 odpowiada częstotliwości Nyquista) 
w porządku rosnącym, przy czym dozwolone jest dwukrotne użycie wartości częstotliwości 
(odpowiada to skokowej zmianie charakterystyki amplitudowej mag). Wartość N jest 
proponowanym rzędem filtru. Im wyższa wartość N, tym lepsze dopasowanie.  
 

1.  Uruchomić Matlaba 
2.  Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file 
3.  Wpisz poniższy kod źródłowy 
4.  Zaproponuj własny filtr środkowoprzepustowy o bardzo dużej selektywności, wyrysuj 

rozkład zer i biegunów na płaszczyźnie Z. 

 
f=[0 0.1 0.13 0.3 0.32 0.4 0.42 0.6 0.63 0.8 0.83 0.9 0.92 1]; 
mag=[0 0 1 1 0.5 0.5 0 0 1 1 0.7 0.7 0 0 ]; 
[l1,m1]=yulewalk(18,f,mag); 
[h1,w1]=freqz(l1,m1,128); 
[l2,m2]=yulewalk(50,f,mag); 
[h2,w2]=freqz(l2,m2,128); 
subplot(211),plot(f,mag,w1/pi,abs(h1)), 
grid,xlabel(‘f’),ylabel(‘abs(h1)’),title(‘rzad N=18’)  
subplot(212), plot(f,mag,w2/pi,abs(h2)), 
grid,xlabel(‘f’),ylabel(‘abs(h2)’), title(‘rzad N=50’) 
pause,clg 
[z,p,k]=tf2zp(l1,m1); 
fi=0:0.05:2*pi; 
axis(‘square’) 
plot(real(p),imag(p),’x’, sin(fi),cos(fi)) 
xlabel(‘real(p)’),ylabel(‘imag(p)’),title(‘Rozklad biegunow’), grid 
 

background image

Program dokonuje projektowania dwu filtrów typu IIR: jeden jest rzędu 18, drugi rzędu 
50. Dodatkowo analizowane jest położenie biegunów otrzymanej funkcji w celu 
sprawdzania warunków stabilności filtru.  

LAB_3_3:  
PROJEKTOWANIE FILTRÓW TYPU FIR 
 
Filtry o skończonej odpowiedzi impulsowej FIR, choć zwykle dużo wyższego rzędu niż IIR
posiadają wiele zalet, z których najważniejsze to możliwość uzyskania dokładnie liniowej 
charakterystyki fazowej, bezwzględna stabilność, prostota projektowania. Matlab zapewnia 
kilka funkcji do projektowania tego typu filtru. Należy do nich remez, w której realizuje się  
algorytm Parks-McClelllana. Wywołanie tej funkcji ma postać: 
 
b = remez (N, f, mag) 
 
Gdzie argumenty wejściowe N, f, mag mają identyczną interpretację jak funkcji yulewalk
natomiast b zawiera obliczone wartości współczynników transmitancji filtru FIR. 
 

1.  Uruchomić Matlaba 
2.  Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file 
3.  Zaprojektować dolnoprzepustowy filtr FIR rzędu 30 o znormalizowanej częstotliwości 

odcięcia 0.3 wykorzystując metodę remez  

4.  Wyrysować charakterystykę amplitudową oraz położenie zer na płaszczyźnie Z 

 
W sposób podobny wywołuje się funkcję fir2, stosującą klasyczny algorytm okienkowy 
projektowania filtru FIR z oknem wybieranym przez użytkownika. Sposób jej wywołania 
 
b = fir2(N, f, mag, window) 
 
Uwzględnia dodatkowo możliwość użycia wybranego okna (jedno spośród następujących 
funkcji okna: bartlett, blackman, boxcar, chebwin, hamming, hanning, kaiser, triang). Przy 
opuszczeniu w linii wywołania nazwy okna, stosowane jest okno Hamminga. 
 

1.  Uruchomić Matlaba 
2.  Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file 
3.  Zaprojektować dolnoprzepustowy filtr FIR rzędu 30 o znormalizowanej częstotliwości 

odcięcia 0.3 wykorzystując metodę okienkową fir2  

4.  Wyrysować charakterystykę amplitudową oraz położenie zer na płaszczyźnie Z 

 
LAB_3_4 :  
BADANIE WPŁYWU RZĘDU FILTRU NA JEGO CHARAKTERYSYKĘ 
AMPLITUDOWĄ 
 
Celem ćwiczenia jest zapoznanie z własnościami filtru cyfrowego zrealizowanego w postaci 
kaskady ogniw drugiego rzędu (posiadających po 2 bieguny (i zera) sprzężone), oraz 
wpływem poszczególnych ogniw na charakterystykę filtru 
 
1. Uruchomić MATLABA 
2. Uruchomić program  “sosdemo”, pisząc jego nazwę w oknie MATLABA 
3. W drugim menu po prawej stronie wybrać filtr Butterwortha opcją “Butter” 
4. Zaobserwować przebieg łącznej charakterystyki filtru w zależności od ilości ogniw. 

background image

5.  W polu “Cascade” wyłączyć łączne wyliczanie charakterystyki i zaobserwować 
charakterystyki poszczególnych ogniw filtru. 
6. W polu “Show all” wyłączyć wyświetlanie wszystkich charakterystyk, w polu “3-D plot” 
wyłączyć rysowanie trójwymiarowe, przerysować poszczególne charakterystyki łączne i 
poszczególnych ogniw. 
7. W drugim menu po prawej stronie wybrać kolejne filtry i powtórzyć kroki 4-6 

 

 
LAB_3_5 :  
BADANIE WPŁYWU TYPU FILTRU NA JEGO RZĄD, PRZY ZADANYCH 
TOLERANCJACH NA CHARAKTERYSTYKĘ AMPLITUDOWĄ 
 
Celem ćwiczenia jest zapoznanie z zależnością między typem filtru a rzędem przy zadanych 
zafalowaniach, pasmie przejściowym i tłumieniu w pasmie zaporowym. 
 
1. Uruchomić MATLABA 
2. Uruchomić program  “filtdemo”, pisząc jego nazwę w oknie MATLABA 
3. W górnym menu po prawej stronie wybrać filtr Butterwortha opcją “Butter” 
4. Zaobserwować przebieg charakterystyki filtru w zależności od zadanych tolerancji. 
5.  W polu “Order” odczytać rząd filtru spełniającego zadane wymagania. 
6. W polu “Fstop” zmienić częstotliwość z 600 na 550, 800 Hz i odczytać niezbędne rzędy 
filtru. Powrócić do ustawienia początkowego. 
7. W polu “Rpass” zmienić zafalowania w paśmie przepustowym z 3 dB na 1, i 0.1 dB                   
i odczytać niezbędne rzędy filtru. Powrócić do ustawienia początkowego. 
8. W polu “Rstop” zmienić tłumienie w paśmie zaporowym z 50 dB na 30, i 80 dB i odczytać 
niezbędne rzędy filtru. Powrócić do ustawienia początkowego. 
9. Powtórzyć kroki 4-8 dla pozostałych typów filtrów. 

 

LAB_3_6 :  
BADANIE WPŁYWU FILTRU CYFROWEGO NA SYGNAŁY CYFROWE 
 
Celem ćwiczenia jest zapoznanie z efektem filtracji sygnału za pomocą filtru cyfrowego. 
 
1. Uruchomić MATLABA 
2. Uruchomić program  “simulink”, pisząc jego nazwę w oknie MATLABA 
3. Uruchomić program  “extras”, klikając myszą na jego nazwę w oknie SIMULINKA
4. Uruchomić program  “filters”, klikając myszą na jego nazwę w oknie EXTRAS
5. Uruchomić program  “digital lowpass”, zawierający bibliotekę filtrów cyfrowych 
dolnoprzepustowych klikając myszą na jego nazwę. 
6. Uruchomić program  “demo”, klikając myszą na jego nazwę w oknie EXTRFILT  
7. Uruchomić symulację wybierając w menu “simulation” opcję “start” 
8. Zaobserwować przebieg sygnału szumowego na wejściu i wyjściu filtru oraz jego gęstość 
widmową i przesunięcie fazy. 
9. Zatrzymać symulację wybierając w menu “simulation” opcję “stop” 
10. Zmienić parametry źródła sygnału, klikając myszą na generator. Wybrać przebieg 
prostokątny o częstotliwości 62.8 rad/s (10 Hz). 
11. Usunąć filtr pasmowoprzepustowy zaznaczając go i naciskając klawisz DELETE 
12. Przenieść z biblioteki filtrów dolnoprzepustowych filtr Czebyszewa i umieścić go w 
miejsce filtru pasmowego. 
13. Usunąć analizator zaznaczając go i naciskając klawisz DELETE 

background image

14. Przenieść z biblioteki ujść “sinks” oscyloskop “scope” i umieścić go na wyjściu filtru. 
Kliknięcie na ikonę spowoduje rozwinięcie oscyloskopu. 
15. Kliknąć na filtr i zmienić okres próbkowania na 0.001 s
16. Zmienić częstotliwość graniczną filtru na 10/500 i nacisnąć OK. 
17. Uruchomić symulację wybierając w menu “simulation” opcję “start” 
18. Zaobserwować przebieg sygnału na oscyloskopie 
19. Zatrzymać symulację wybierając w menu “simulation” opcję “stop” 
20. Powtórzyć kroki 16-19 dla częstotliwości filtru 20/500, 30/500, 40/500, 50/500 i 60/500. 
21. Zamknąć okno Simulink i pozostałe biblioteki bez zapisywania zmian (save changes NO