Filtry: Różnice pomiędzy wersjami
Linia 64: | Linia 64: | ||
=Funkcja przejścia (transfer function)= | =Funkcja przejścia (transfer function)= | ||
− | Zastosujmy do obu stron powyższego równania transformatę <math>\mathcal{Z}</math>: | + | Zastosujmy do obu stron powyższego równania opisującego system LTI, czyli |
+ | |||
+ | <math> | ||
+ | \displaystyle | ||
+ | \sum_{k=0}^K a_k y[n-k] = \sum_{l=0}^L b_l x[n-l] | ||
+ | </math> | ||
+ | |||
+ | transformatę <math>\mathcal{Z}</math>: | ||
:<math> | :<math> | ||
+ | \displaystyle | ||
\mathcal{Z}\left\{\sum_{k=0}^K a_k y[n-k] \right\} = \mathcal{Z}\left\{ \sum_{l=0}^L b_l x[n-l] \right\} | \mathcal{Z}\left\{\sum_{k=0}^K a_k y[n-k] \right\} = \mathcal{Z}\left\{ \sum_{l=0}^L b_l x[n-l] \right\} | ||
</math> | </math> | ||
Linia 73: | Linia 81: | ||
:<math> | :<math> | ||
+ | \displaystyle | ||
\sum_{k=0}^K a_k \mathcal{Z}\left\{ y[n-k]\right\} = \sum_{l=0}^L b_l \mathcal{Z} \left\{x[n-l]\right\} | \sum_{k=0}^K a_k \mathcal{Z}\left\{ y[n-k]\right\} = \sum_{l=0}^L b_l \mathcal{Z} \left\{x[n-l]\right\} | ||
</math> | </math> | ||
Linia 78: | Linia 87: | ||
:<math> | :<math> | ||
+ | \displaystyle | ||
\sum_{k=0}^K a_k z^{-k} Y(z) = \sum_{l=0}^L b_l z^{-l} X(z) | \sum_{k=0}^K a_k z^{-k} Y(z) = \sum_{l=0}^L b_l z^{-l} X(z) | ||
</math> | </math> | ||
Linia 83: | Linia 93: | ||
:<math> | :<math> | ||
+ | \displaystyle | ||
Y(z) \sum_{k=0}^K a_k z^{-k} = X(z) \sum_{l=0}^L b_l z^{-l} | Y(z) \sum_{k=0}^K a_k z^{-k} = X(z) \sum_{l=0}^L b_l z^{-l} | ||
</math> | </math> | ||
Linia 107: | Linia 118: | ||
− | :<math>Y(z)=H(z) X(z)</math> | + | :<math> |
+ | \displaystyle | ||
+ | Y(z)=H(z) X(z) | ||
+ | </math> | ||
Linia 114: | Linia 128: | ||
− | + | ==Działanie filtru w dziedzinie czasu, typy filtrów== | |
Przypomnijmy definicję splotu: <math> | Przypomnijmy definicję splotu: <math> | ||
(f * g)[n] = \sum_{m = -\infty}^{\infty} f[m] g[n - m] | (f * g)[n] = \sum_{m = -\infty}^{\infty} f[m] g[n - m] | ||
Linia 120: | Linia 134: | ||
− | + | === FIR (MA) === | |
Działanie filtru zadanego przez odpowiedź impulsową ''b'' o długości <math>n_b</math> na sygnał ''x'' można zapisać: | Działanie filtru zadanego przez odpowiedź impulsową ''b'' o długości <math>n_b</math> na sygnał ''x'' można zapisać: | ||
Linia 132: | Linia 146: | ||
− | + | === IIR (AR) === | |
Operacja splotu działa tu na sekwencji wyjściowej: | Operacja splotu działa tu na sekwencji wyjściowej: | ||
:<math> | :<math> | ||
Linia 141: | Linia 155: | ||
− | + | ===IIR (ARMA) === | |
Najbardziej ogólnym typem jest połączenie dwóch powyższych czyli: | Najbardziej ogólnym typem jest połączenie dwóch powyższych czyli: | ||
::<math> | ::<math> | ||
Linia 153: | Linia 167: | ||
'''Rzędem filtru''' nazywamy maksymane opóźnienie w próbkach potrzebne do wytworzenia nowej próbki wyjściowej. Dla filtrów FIR jest on równy liczbie <math> n_b</math>. Dla filtrów IIR jest to większa z liczb <math>n_a, n_b</math>. | '''Rzędem filtru''' nazywamy maksymane opóźnienie w próbkach potrzebne do wytworzenia nowej próbki wyjściowej. Dla filtrów FIR jest on równy liczbie <math> n_b</math>. Dla filtrów IIR jest to większa z liczb <math>n_a, n_b</math>. | ||
− | + | ==Działanie filtru w dziedzinie częstości== | |
Stosując transformatę <math>Z</math> ([[%C4%86wiczenia_5#Jak_znale.C5.BA.C4.87_A_.E2.80.94_transformata_Z|analogicznie jak dla procesu AR]]) możemy równanie z dziedziny czasu przenieść do dziedziny częstości. Filtrowanie odpowiada przemnożeniu transformaty sygnału przez transformatę funkcji przenoszenia filtru: | Stosując transformatę <math>Z</math> ([[%C4%86wiczenia_5#Jak_znale.C5.BA.C4.87_A_.E2.80.94_transformata_Z|analogicznie jak dla procesu AR]]) możemy równanie z dziedziny czasu przenieść do dziedziny częstości. Filtrowanie odpowiada przemnożeniu transformaty sygnału przez transformatę funkcji przenoszenia filtru: | ||
Wersja z 12:42, 2 lis 2023
Spis treści
AS/ Filtry
Systemy LTI opisuje równanie różnicowe
- [math] \displaystyle \sum_{k=0}^K a_k y[n-k] = \sum_{l=0}^L b_l x[n-l] [/math]
Jeśli w miejsce sygnału [math]x[n][/math] wstawimy szum [math]\epsilon[i][/math], dostaniemy równanie opisujące proces ARMA — AutoRegressive Moving Average.
- [math] \displaystyle \sum_{k=0}^K a_k y[n-k] = \sum_{l=0}^L b_l \epsilon[n-l] [/math]
Dla [math]L=0[/math] dostajemy proces AR (autoregressive)
w którym sygnał na wyjściu [math]y[/math] zależy tylko od [math]K[/math] poprzednich próbek wyjścia [math]y[/math].
- [math] \displaystyle \epsilon[n] = \sum_{k=0}^K a_k y[n-k] [/math]
kładąc [math]a_0 = 1[/math]
- [math] \displaystyle \epsilon[n] = y[n] + \sum_{k=1}^K a_k y[n-k] [/math]
- [math] \displaystyle y[n] = \sum_{k=1}^K -a_k y[n-k] + \epsilon[n] [/math]
Dla [math]K=0[/math] dostajemy proces MA (moving average)
w którym sygnał na wyjściu [math]y[/math] zależy tylko od [math]L[/math] poprzednich próbek wejścia
- [math] \displaystyle y[n] = \sum_{l=0}^L b_l \epsilon[n-l] [/math]
czyli splot szumu [math]\epsilon[n][/math] z sekwencją [math]b_l[/math]
Funkcja przejścia (transfer function)
Zastosujmy do obu stron powyższego równania opisującego system LTI, czyli
[math] \displaystyle \sum_{k=0}^K a_k y[n-k] = \sum_{l=0}^L b_l x[n-l] [/math]
transformatę [math]\mathcal{Z}[/math]:
- [math] \displaystyle \mathcal{Z}\left\{\sum_{k=0}^K a_k y[n-k] \right\} = \mathcal{Z}\left\{ \sum_{l=0}^L b_l x[n-l] \right\} [/math]
- [math] \displaystyle \sum_{k=0}^K a_k \mathcal{Z}\left\{ y[n-k]\right\} = \sum_{l=0}^L b_l \mathcal{Z} \left\{x[n-l]\right\} [/math]
- [math] \displaystyle \sum_{k=0}^K a_k z^{-k} Y(z) = \sum_{l=0}^L b_l z^{-l} X(z) [/math]
- [math] \displaystyle Y(z) \sum_{k=0}^K a_k z^{-k} = X(z) \sum_{l=0}^L b_l z^{-l} [/math]
Dla systemu przyczynowego dostajemy:
- [math] \displaystyle \frac{Y(z)}{X(z)} \equiv H(z) = \frac{\sum_{l=0}^L b_l z^{-l}}{\sum_{k=0}^K a_k z^{-k}} [/math]
[math]H(z)[/math] — funkcja systemu (system function) pozwala spójnie przedstawić działanie filtra LTI na sygnał [math]x[/math] w przestrzeni transformaty [math]\mathcal{Z}[/math]:
- [math] \displaystyle Y(z)=H(z) X(z) [/math]
Działanie filtru w dziedzinie czasu, typy filtrów
Przypomnijmy definicję splotu: [math] (f * g)[n] = \sum_{m = -\infty}^{\infty} f[m] g[n - m] [/math]
FIR (MA)
Działanie filtru zadanego przez odpowiedź impulsową b o długości [math]n_b[/math] na sygnał x można zapisać:
- [math]y(n) = (b*x)[n] =b[0]*x[n] + b[1]*x[n-1] + \dots + b[n_b]*x[n-n_b][/math]
Taki filtr nazywamy filtrem o skończonej odpowiedzi impulsowej (Finite Impulse Response, FIR), bo odpowiedź na impulsowe wzbudzenie kończy się po [math]n_b[/math] próbkach. Inna nazwa to średnia biegnąca (Moving Average, MA).
Dla filtrów FIR współczynniki filtru i odpowiedź impulsowa są takie same.
Jeśli współczynniki tworzą sekwencję symetryczną bądź antysymetryczną, oparty na nich filtr FIR będzie liniowo przesuwał fazę filtrowanego sygnału (linear phase filter) -- sygnał filtrowany jest przesunięty w czasie o ok. [math]n_b / 2[/math].
IIR (AR)
Operacja splotu działa tu na sekwencji wyjściowej:
- [math] y[n] = x[n] - a[1]*y[n-1] - \dots - a[n_a]*y[n-n_a] [/math]
Filtr ten nazywany jest filtr rekursywnym lub autoregresyjnym (AR). W ogólności jego odpowiedź impulsowa może być nieskończona. Faza filtrowanego sygnału zaburzana jest nieliniowo (nonlinear phase filter)
IIR (ARMA)
Najbardziej ogólnym typem jest połączenie dwóch powyższych czyli:
- [math] \begin{array}{ll} y[n] = b[0]*x[n] &+ b[1]*x[n-1] + \dots + b[n_b]*x[n-n_b]\\ &- a[1]*y[n-1] - \dots - a[n_a]*y[n-n_a] \end{array} [/math]
Tą wersję filtru nazywamy filtrem o nieskończonej odpowiedzi impulsowej (Infinite Impulse Response IIR) bo potencjalnie raz wzbudzony może dowolnie długo produkować niezerowe wyjście.
Rzędem filtru nazywamy maksymane opóźnienie w próbkach potrzebne do wytworzenia nowej próbki wyjściowej. Dla filtrów FIR jest on równy liczbie [math] n_b[/math]. Dla filtrów IIR jest to większa z liczb [math]n_a, n_b[/math].
Działanie filtru w dziedzinie częstości
Stosując transformatę [math]Z[/math] (analogicznie jak dla procesu AR) możemy równanie z dziedziny czasu przenieść do dziedziny częstości. Filtrowanie odpowiada przemnożeniu transformaty sygnału przez transformatę funkcji przenoszenia filtru:
- [math]Y[z]=H[z]X[z]=\frac{b[0]+b[1]z^{-1}+\dots +b[n_b]z^{-n_b}}{a[0]+a[1]z^{-1}+\dots +a[n_a]z^{-n_a}}X[z][/math]
Występująca tu funkcja H nosi nazwę transmitancja lub funkcja przenoszenia. Znając funkcję [math]H[/math] łatwo możemy przewidzieć co się stanie z widmem sygnału po przefiltrowaniu. Weźmy [math] z = e^{i 2\pi f}[/math]. Wówczas transmitancja jest funkcją częstości f. Dla każdej konkretnej częstości [math]f_k[/math] przypisuje ona liczbę zespoloną, którą można wyrazić jako [math]A_k e^{i \phi_k}[/math]. W dziedzinie częstości sygnał wyrażony jest przez współczynniki Fourierowskie. Dla konkretnej częstości współczynnik taki [math]X_k = |X_k| e^{i \theta_k}[/math] (liczba zespolona) mówi z jaką amplitudą i jaką fazą exponens zespolony o danej częstości ([math]z_k = e^{i 2\pi f_k}[/math]) wchodzi w skład sygnału.
Zatem działanie filtru na sygnał w dziedzinie częstości polega na przemnożeniu składowej sygnału o częstości [math]f_k[/math] przez liczbę [math]A_k e^{i \phi_k}[/math]:
- [math]Y(f_k) = A_k e^{i \phi_k} |X_k| e^{i \theta_k} z_k = A_k |X_k| e^{i ( \phi_k +\theta_k)} e^{i 2\pi f_k} [/math]
Zatem w wyniku filtrowania składowa sygnału o danej częstości może zmienić amplitudę i fazę ale co warto zauważyć nie zmienia częstości.
Zera i bieguny filtra to odpowiednio miejsca zerowe licznika i mianownika funkcji przenoszenia.