MATLAB „s filtfilt wykonuje filtrowanie w przód-w tył, tj. filtruje, odwraca sygnał, filtruje ponownie i ponownie odwraca. Najwyraźniej zrobiono to w celu zmniejszenia opóźnień fazowych? Jakie są zalety / wady stosowania takiego filtrowania (myślę, że wynikałoby to w efektywnym wzroście kolejności filtrów).

Czy lepiej byłoby używać filtfilt zawsze zamiast filter ( tzn. tylko filtrowanie w przód) Czy są jakieś aplikacje, w których jest to konieczne i gdzie nie powinno się tego używać?

Komentarze

Odpowiedź

Najlepiej przyjrzeć się temu w dziedzinie częstotliwości. Jeśli $ x [n] $ jest sekwencją wejściową, a $ h [n] $ jest odpowiedzią impulsową filtru, to wynikiem pierwszego przejścia filtru jest

$$ X (e ^ {j \ omega}) H (e ^ {j \ omega}) $$

z $ X (e ^ {j \ omega}) $ i $ H (e ^ {j \ omega}) $ the Transformacje Fouriera odpowiednio $ x [n] $ i $ h [n] $. Odwrócenie czasu odpowiada zamianie $ \ omega $ na $ – \ omega $ w dziedzinie częstotliwości, więc po odwróceniu czasu otrzymujemy

$$ X (e ^ {- j \ omega}) H (e ^ {- j \ omega}) $$

Drugi przebieg filtra odpowiada innemu mnożeniu przez $ H (e ^ {j \ omega}) $:

$$ X (e ^ {- j \ omega}) H (e ^ {j \ omega}) H (e ^ {- j \ omega}) $ $

co po odwróceniu czasu ostatecznie daje widmo sygnału wyjściowego

$$ Y (e ^ {j \ omega}) = X (e ^ {j \ omega }) H (e ^ {j \ omega}) H (e ^ {- j \ omega}) = X (e ^ {j \ omega}) | H (e ^ {j \ omega}) | ^ 2 \ tag {1} $$

ponieważ dla współczynników filtru o wartościach rzeczywistych mamy $ H (e ^ {- j \ omega}) = H ^ {*} (e ^ {j \ omega}) $. Z równania (1) wynika, że widmo wyjściowe uzyskuje się przez filtrowanie filtrem o odpowiedzi częstotliwościowej $ | H (e ^ {j \ omega}) | ^ 2 $, whi ch ma wartość czysto rzeczywistą, tj. jego faza jest równa zero, a zatem nie ma zniekształceń fazowych.

To jest teoria. W przetwarzaniu w czasie rzeczywistym występuje oczywiście dość duże opóźnienie, ponieważ odwrócenie czasu działa tylko wtedy, gdy zezwolisz na opóźnienie odpowiadające długości bloku wejściowego. Ale to nie zmienia faktu, że nie ma zniekształceń fazowych, jest to tylko dodatkowe opóźnienie danych wyjściowych. W przypadku filtrowania FIR, to podejście nie jest szczególnie przydatne, ponieważ równie dobrze możesz zdefiniować nowy filtr $ \ hat {h } [n] = h [n] * h [-n] $ i uzyskaj ten sam wynik przy zwykłym filtrowaniu. Bardziej interesujące jest użycie tej metody z filtrami IIR, ponieważ nie mogą one mieć fazy zerowej (lub liniowej, tj. czyste opóźnienie).

Podsumowując:

  • jeśli masz lub potrzebujesz filtra IIR i chcesz zerowego zniekształcenia fazy, ORAZ opóźnienie przetwarzania nie stanowi problemu, to ta metoda jest przydatna

  • jeśli opóźnienie przetwarzania jest problemem nie powinieneś jej używać

  • jeśli masz filtr FIR , możesz łatwo obliczyć nową odpowiedź filtru FIR, która jest równoważna użyciu tej metody. Zauważ, że z filtrami FIR zawsze można zrealizować dokładnie liniową fazę.

Komentarze

  • Utworzyłem tag o nazwie maximum-aposteriori-estimation. Czy mógłbyś zmienić jego nazwę na maximum-a-posteriori-estimation? Przez pomyłkę zapomniałem o - po a. Dziękuję.

Odpowiedź

Znalazłem ten film być bardzo, bardzo pomocnym. (rozwija odpowiedź Matta).

Oto kilka kluczowych pomysłów z filmu:

  • Faza zerowa będzie skutkuje brakiem zniekształcenia fazy, ale skutkuje filtrem bezprzyczynowym. Oznacza to, że jeśli dane są filtrowane w trakcie ich gromadzenia, nie będzie to opcja (dotyczy tylko przechowywanych danych, które możemy przetworzyć później) . tutaj wprowadź opis obrazu
  • Gdy zastosujesz filtr bezprzyczynowy, transjenty zostaną rozmyte do przodu i do tyłu (np. jeśli chcemy tętnienia 2dB, fakt że „będziemy wykonywać bieg do przodu i do tyłu przy użyciu filtru” oznacza, że „będziemy chcieli, aby każdy z nich miał 1 dB). tutaj wprowadź opis obrazu
  • Używa właściwości odwracania czasu dyskretnej transformaty Fouriera. tutaj wprowadź opis obrazu
  • Efektywna odpowiedź częstotliwościowa wywołana przez FILTFILT to wielkość tego w jednym kierunku, podniesiona do kwadratu. Bierzesz sygnał wejściowy, x[n], filtrujesz go, odwracasz wynik, filtrujesz go ponownie i ponownie odwracasz (krok odwrócenia czasu wymaga, aby wszystkie dane były dostępne). wprowadź opis obrazu tutaj

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *