Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 4. Filtry o skończonej odpowiedzi impulsowej (SOI) 1. Filtracja cyfrowa podstawowe wiadomości Cyfrowa filtracja sygnału ma na celu wyodrębnienie pożądanej informacji z danego sygnału dyskretnego. Efektem filtracji danego sygnału wejściowego jest sygnał wyjściowy, przy czym relację między nimi określa deterministyczna funkcja transmitancji filtru. Liniowy filtr cyfrowy jest scharakteryzowany: odpowiedzią impulsową, czyli odpowiedzią na pobudzenie deltą Diraca; odpowiedzią skokową, czyli odpowiedzią na skok jednostkowy; charakterystyką częstotliwościową. 1.1. Charakterystyka częstotliwościowa filtru Przez charakterystykę częstotliwościową filtru rozumiemy wykres przedstawiający widmo jego odpowiedzi impulsowej i pokazujący, jak dany filtr zmienia sygnał z punktu widzenia widma tego sygnału. Każdej częstotliwości na charakterystyce przyporządkowana jest liczba dodatnia m c X m = A filt m, przy czym wartość c = 1 oznacza, że składowa o danej częstotliwości przy filtrowaniu A oryg się nie zmienia, natomiast c = 0 oznacza, że dana składowa jest całkowicie tłumiona. Charakterystykę częstotliwościową przedstawia się często w skali logarytmicznej, wówczas wartości na osi rzędnych wyrażane są w decybelach: c [db] =20 log A filt A oryg, gdzie c [db] zmiana amplitudy w decybelach, A filt amplituda po filtracji, A oryg amplituda przed filtracją. 1
2. Filtry SOI Filtr o skończonej odpowiedzi impulsowej (SOI; także FIR, ang. finite impulse response) jest nierekursywnym filtrem cyfrowym. Nierekursywność oznacza przy tym, że nie występuje w tym filtrze sprzężenie zwrotne, co m.in. wiąże się z tym, że odpowiedź filtru SOI na skończone w czasie pobudzenie jest również skończona w czasie. Filtr SOI określa się ciągiem współczynników {b n }, natomiast jego transmitancja wyraża się wzorem: H SOI z =b 0 b 1 z 1 b 2 z 2... b N z N. Jeśli zdefiniujemy filtr jako tablicę b(n), jego odpowiedź impulsowa będzie równoważna zestawowi jego współczynników. Tym samym filtrację sygnału x(n) wykonujemy, obliczając splot sig_conv(br, bi, xr, xi). Trzeba przy tym pamiętać, że jeśli chcemy bezpośrednio porównywać sygnały przed filtracją x i po filtracji x f w dziedzinie czasu, trzeba uwzględnić fakt, że wynik splotu x*b ma więcej próbek niż sygnał filtrowany. Na przykład jeśli filtr ma nieparzystą (!) liczbę współczynników N f, do porównania musimy wykorzystać sygnał: [n]={ 2 x f [i] : N f 1 1 i N xf N f 1 2 2 }, x f gdzie N xf liczba próbek sygnału x f. 2.1. Rodzaje filtrów ze względu na charakterystykę częstotliwościową Ze względu na to, które składowe widma są przez filtr tłumione, a które bez zmian zachowywane, wyróżniamy: filtry dolnoprzepustowe, przez które tłumione są składowe f > f g ; filtry górnoprzepustowe, przez które tłumione są składowe f < f d ; filtry pasmowoprzepustowe, tłumiące składowe f < f d i f > f g ; filtry pasmowozaporowe, tłumiące składowe f d < f < f g. 2.2. Filtry działające na zasadzie średniej kroczącej Najprostszą metodą filtracji sygnałów, często zupełnie wystarczającą, jest zastosowanie tzw. średniej kroczącej (ang. moving average). Metoda ta polega na uśrednianiu kilku kolejnych próbek sygnału w myśl zależności: gdzie M liczba uśrednianych próbek. M 1 x f [ j]= 1 M k=0 x [ j k ], 2
2.3. Filtry oparte na okienkowanej funkcji sinc 2.3.1. Filtry dolnoprzepustowe Prostą filtrację dolnoprzepustową można również wykonać za pomocą filtru zdefiniowanego następująco: b[ j]={sin 2 f c j M j M 2 2 w[ j ] dla j M 2 2 f c dla j= M 2 gdzie f c = f g f s 0; 0,5 znormalizowana częstotliwość graniczna, M długość filtru (wynikowy wektor b będzie miał M + 1 elementów), w[ j ] wykorzystywane okno. Okna poprawiają charakterystyki częstotliwościowe filtru, a wykorzystuje się m.in.: okno Blackmana w B [ j]=0,42 0,5cos 2 j M 0,08cos 4 j M, okno Hamminga w H [ j]=0,54 0,46cos 2 j M. Po obliczeniu w ten sposób współczynników filtru dolnoprzepustowego należy pamiętać o tym, aby go znormalizować. Oznacza to zapewnienie takiego działania filtru, by składowa stała sygnału była po przetworzeniu przez filtr niezmieniona (wzmocnienie filtru dla f = 0 wynosi 1). Aby uzyskać taki efekt, należy podzielić każdy element wektora b przez sumę wszystkich jego elementów: 2.3.2. Pozostałe rodzaje filtrów j b norm [ j]= b[ j]. M 1 b[ j] j=1 Mając do dyspozycji współczynniki filtru dolnoprzepustowego {b n dp }, można zaprojektować filtr górnoprzepustowy {b n gp } o takiej samej częstotliwości granicznej, tzn. f d = f g. Aby jednak metoda działała prawidłowo, odpowiedź impulsowa filtru musi mieć nieparzystą liczbę próbek, musi być symetryczna względem elementu centralnego i jej charakterystyka amplitudowa musi mieć maksimum równe 1. Wówczas współczynniki filtru górnoprzepustowego otrzymujemy z równania: b gp [n]= [n c] b dp [n], gdzie c jest indeksem elementu centralnego oraz 1 dla i=0 [i]={ 0 dla i 0 Pozostałe filtry uzyskujemy przez odpowiednie łączenie ze sobą filtrów dolnoi górnoprzepustowych. 3
3. Zadania do realizacji Na zajęciach laboratoryjnych należy rozwiązać 5 podanych poniżej zadań. Za każde zadanie można otrzymać jeden punkt pod warunkiem, że zostanie ono całkowicie poprawnie zrealizowane. Warto przypomnieć, że w zadaniach wskazane jest wykorzystywać funkcje napisane podczas wcześniejszych ćwiczeń. Zadanie nr 1 W zadaniu pierwszym należy napisać funkcję postaci: function [c_db]=decibels(c_1) przeliczającą charakterystykę częstotliwościową filtru z liniowej na logarytmiczną, a następnie funkcję postaci: function [c_1, c_db]=freq_resp(a_in, A_out) obliczającą liniową i logarytmiczną charakterystykę częstotliwościową filtru, dla którego sygnał o widmie A out jest odpowiedzią na pobudzenie sygnałem o widmie A in. Zadanie nr 2 W zadaniu drugim należy napisać funkcję następującej postaci: function [x_f2]=correct_length(x_f, N_f) która z sygnału x f, będącego sygnałem x po filtracji, wybierze próbki w sposób pozwalający na porównanie sygnałów x i x f w dziedzinie czasu. N f jest liczbą próbek zastosowanego filtru. Przed napisaniem funkcji należy wykonać odpowiednie testy, pozwalające stwierdzić, w jaki sposób należy skracać sygnał x f. 4
Zadanie nr 3 Zadanie trzecie polega na napisaniu funkcji następującej: function [x_f]=movavg_filter(x, M) która wykona filtrację sygnału x na zasadzie średniej kroczącej dla M próbek. Jak w efekcie filtracji zmienia się widmo sygnału x i jak ta zmiana zależy od M? Zadanie nr 4 W zadaniu czwartym należy napisać funkcję następującej postaci: function [b]=sinc_filter(fc, M) która będzie tworzyć filtr dolnoprzepustowy o długości M i częstotliwości granicznej f c. W funkcji należy uwzględnić dowolnie wybrane okno. Zadanie nr 5 W zadaniu piątym należy napisać funkcję następującej postaci: function [x_f]=fir_filter(x, b) która wykona filtrację sygnału x filtrem o współczynnikach z tablicy b. Wymagane jest, aby sygnał x f miał tyle samo próbek co sygnał x. Jak należy zmienić tę funkcję, by pracowała na sygnałach zespolonych? 5
Pytania na kartkówkę 1. Napisz funkcję przeliczającą amplitudę wyrażoną liniowo na wyrażoną logarytmicznie (w decybelach). 2. Napisz funkcję realizującą filtrowanie za pomocą średniej kroczącej. 3. Napisz funkcję, która z filtru dolnoprzepustowego o częstotliwości granicznej d f s tworzy filtr górnoprzepustowy o odwrotnej charakterystyce. Jaką częstotliwość graniczną ma ten filtr? 4. Co należy zrobić, aby mając do dyspozycji współczynniki filtru dolnoprzepustowego o częstotliwości granicznej f g i filtru górnoprzepustowego o częstotliwości granicznej f d < f g, uzyskać filtr pasmowoprzepustowy o pasmie przenoszenia (f d, f g )? 5. Co należy zrobić, aby mając do dyspozycji współczynniki filtru dolnoprzepustowego o częstotliwości granicznej f g i filtru górnoprzepustowego o częstotliwości granicznej f d > f g, uzyskać filtr pasmowozaporowy o pasmie tłumienia (f d, f g )? 6