Filtracja FIR: Równania Matematyczne i Zastosowania

Nazwa FIR oznacza filtr o skończonej odpowiedzi impulsowej (polski akronim tej nazwy to filtr SOI). Oznacza to tyle, że reakcja na wyjściu tego układu na pobudzenie o skończonej długości jest również skończona (przez długość pobudzenia i odpowiedzi rozumie się długość odcinka czasu, dla którego próbki sygnału przyjmują wartości niezerowe).

Aby warunek ten był spełniony, w tego typu filtrach nie występuje pętla sprzężenia zwrotnego, co widać na poniższym schemacie (zob. Realizacja skomplikowanych transmitancji wymaga wielomianu wysokiego rzędu, dlatego w porównaniu z filtrem o nieskończonej odpowiedzi impulsowej dla uzyskania podobnej charakterystyki potrzeba więcej zasobów sprzętowych, przez co realizacja jest bardziej złożona obliczeniowo.

Filtry o skończonej odpowiedzi impulsowej (SOI), określane angielskim skrótem FIR (Finite Impulse Response) są cyfrową realizacją filtrów, nie mają one odpowiednika w technice analogowej. Są to bardzo proste algorytmy.

Zasadę działania filtrów FIR można opisać jednym zdaniem: $L$ ostatnich próbek sygnału jest mnożonych przez współczynniki filtru (filter coefficients lub taps), a wyniki mnożenia są sumowane.

$$y(n) = b_0 x(n) + b_1 x(n-1) + b_2 x(n-2) + ...$$

Przeczytaj także: Definicja i pomiar filtracji kłębuszkowej

Filtr FIR oblicza więc ważoną sumę pewnej liczby ostatnich próbek sygnału, ze współczynnikami $b_i$ jako wagami sumowania. Odpowiedź impulsowa filtru FIR (impulse response) jest po prostu zbiorem współczynników $b_i$. Transformata Fouriera odpowiedzi impulsowej jest charakterystyką częstotliwościową filtru (frequency response). Wartość $N$ nazywa się rzędem filtru (filter order).

W analizie sygnałów filtrowanie rozumiane jest najczęściej jako operacja mająca na celu usunięcie z sygnału pewnych składowych.

[math] y[n] = b(1)x[n] + b(2)x[n-1] + ... [math] - a(2)y[n-1] - ...

Jeśli [math]n_b=0 [/math] i [math]n_a \ne 0 [/math] filtr ma nieskończoną odpowiedź impulsową (IIR).

Jeśli [math]n_b \ne 0 [/math] i [math]n_a \ne 0 [/math] także jest filtrem o nieskończonej odpowiedzi impulsowej.

Przeczytaj także: Webber AP8400 - wymiana filtrów

[math] y[n]+ a(2)y[n-1] + ... [math] =b(1)x[n] + b(2)x[n-1] + ...

Funkcja[math]H$[/math] w tym równaniu nazywana jest funkcją przenoszenia filtra.

Pokazaliśmy, że filtr mnoży każdą składową przez liczbę [math]M(f)e^{i \phi(f)}[/math], przez co zmienia jej fazę o [math]\phi(f)[/math].

Dla nieliniowej zależności [math]\phi(f)[/math] każda składowa jest opóźniona inaczej.

Sens tej definicji widać jeśli zastosujemy ją do sinusa o częstości [math]\omega_1[/math] i fazie [math]\phi_1[/math].

Przeczytaj także: Optymalne rozcieńczenie bimbru

Sens tej definicji widać jeśli rozważymy co stanie się z sygnałem składającym się z dwóch cosinusiod o bliskich sobie częstościach [math]\omega_1[/math] i [math] \omega_2[/math].

Widać, że takie dwa cosinusy powodują efekt dudnienia.

Innymi słowy można je postrzegać jako oscylację z częstością średnią obu cosinusów modulowaną wolno zmienną ([math]\Delta \omega/2[/math]) obwiednią.

Zatem widzimy, że obwiednia przesunięta jest w czasie o [math]t_g[/math].

mają dopuszczalne tętnienia zarówno w paśmie przenoszenia jak i tłumienia.

a) Moduł funkcji przenoszenia.

Projekt (szara linia), realizacja dla filtra eliptycznego 5 rzędu (czarna linia), b) Opóźnienie grupowe.

c) Zastosowanie filtra do sygnału złożonego z sinusoidy 10Hz i 50Hz: szare - wejście, czarne- wyjście.

Program SVAROG ma wygodne narzędzie do projektowania filtrów IIR.

Rysunek poniżej przedstawia charakterystykę amplitudową górnoprzepustowego filtru Czebyszewa I.

Filtr FIR jest jednym z prostszych algorytmów do implementacji dlatego wziąłem go na pierwszy ogień.

Jego działanie polega na wyliczaniu średniej ważonej z kilku próbek sygnału.

Blok z-1 opóźnia sygnał o jedną próbkę.

Powyższa implementacja filtru FIR pozwala na uwzględnienie dowolnej ilości próbek.

Warto dodać, że suma współczynników wag musi być równa jeden.

Napisałem jeszcze taką prostą zabawkę żeby każdy mógł zobaczyć jaki wpływ na przefiltrowany sygnał ma dobór współczynników.

Jest to filtr uwzględniający jedną próbkę wstecz.

To moje pierwsze podejście do filtracji sygnałów.

Filtry są to układy lub algorytmy, które modyfikują sygnał.

Filtr cyfrowy to algorytm, który na podstawie pewnej deterministycznej funkcji przekształca wejściowy ciąg próbek w zmodyfikowany ciąg wyjściowy.

Najczęściej stosowane są filtry przepustowo-zaporowe, których zadaniem jest przepuszczenie pewnych zakresów częstotliwości sygnału i wytłumienie pozostałych.

Istnieją jednak również inne typy filtrów, np.

Filtr Dolnoprzepustowy i Metoda Okienkowania

Jako pierwszy rozpatrzymy filtr dolnoprzepustowy (DP) (high pass, HP). Filtr ten przepuszcza składowe częstotliwościowe do ustalonej częstotliwości granicznej ($f_c$), nazywanej też częstotliwością odcięcia (cutoff frequency). Do częstotliwości granicznej mamy pasmo przepustowe (pass band), powyżej - pasmo zaporowe (stop band). Jeżeli obliczymy odwrotne przekształcenie Fouriera powyższej charakterystyki, otrzymamy odpowiedź impulsową filtru.

Pierwszy problem można rozwiązać wycinając wybraną liczbę współczynników wokół zerowej wartości czasu. Np. biorąc współczynniki od $n=-15$ do $n=15$ dostaniemy 31 współczynników filtru (jeżeli w punkcie zerowym też jest współczynnik). Obcinamy więc nieskończoną odpowiedź filtru do skończonej liczby współczynników. Mówiąc inaczej, nakładamy okno czasowe na odpowiedź impulsową filtru, centralnie wokół zerowego punktu na osi czasu. Stąd nazwa tej metody projektowania filtru: metoda okienkowania (windowing).

Podobnie jak w przypadku analizy częstotliwościowej, należy używać specjalnych funkcji okna, aby ograniczyć zafalowania charakterystyki (listki boczne). Możemy zastosować te same funkcje, co w przypadku FFT, a więc okno Hamminga lub Blackmana. Istnieją również specyficzne typy okien do projektowania filtrów, np.

Problem nieprzyczynowości filtru rozwiązujemy przesuwając okno o połowę jego długości, tak że pierwsza wartość odpowiedzi impulsowej znajduje się w punkcie zerowym.

W celu zaprojektowania filtru metodą okienkową w języku Python musimy sięgnąć po moduł scipy.signal, który w poniższych przykładach został zaimportowany pod skrótem sig.

Do projektowania filtru użyjemy funkcji firwin.

Wyjaśnienia wymaga parametr pass_zero.

Należy go ustawić na True jeżeli zerowa częstotliwość ma znajdować się w paśmie przepustowym, False jeżeli w paśmie zaporowym.

Na wykresie odpowiedzi impulsowej widzimy że, jest ona symetryczna.

Ponieważ wybraliśmy parzystą liczbę współczynników (30), środek symetrii leży pomiędzy środkowymi próbkami.

Aby wykreślić charakterystykę częstotliwościową filtru, możemy obliczyć ją za pomocą funkcji freqz.

Domyślnie oblicza ona 512 punktów charakterystyki, liczbę punktów można zmienić dodając parametr worN.

Wpływ Długości Filtru na Jego Charakterystykę

Na wykresie charakterystyki filtru o długości 30 widać że charakterystyka ta bardzo wyraźnie odbiega od idealnej: przejście do pasma zaporowego jest bardzo szerokie, a w paśmie zaporowym są widoczne zafalowania charakterystyki. Jak zmieni się kształt charakterystyki dla większej długości filtru? Większe okno obejmie dłuższy fragment idealnej odpowiedzi impulsowej filtru, a więc można się spodziewać że charakterystyka filtru będzie "dokładniejsza".

Z wykresów wynika, że w "nieidealnym" filtrze FIR zawsze występuje pasmo przejściowe (transition band) w pobliżu częstotliwości granicznej. Zgodnie z przewidywaniem, większa długość filtru powoduje zmniejszenie szerokości pasma przejściowego. Zwiększenie liczby współczynników filtru poprawia "dokładność" filtracji.

tags: #filtracja #FIR #równania #matematyczne

Popularne posty: