Filtry IIR co oznacza nieskończoność?


11

Mam trudności ze zrozumieniem, co w praktyce oznacza „nieskończoność” w IIR. Teoretycznie odpowiedź impulsowa jest wykorzystywana do sprzężenia zwrotnego. Jeśli to sprzężenie zwrotne nigdy nie kończy się w jaki sposób generowany jest wynik?

Odpowiedzi:


18

Aby odpowiedzieć na to pytanie, musisz wiedzieć, co oznaczają „Impuls” i „Odpowiedź” ...

„Impuls” to prosty puls. Cyfrowo byłaby to próbka o maksymalnej wartości, podczas gdy wszystkie inne próbki przed i po niej byłyby zerowe. Jeśli tego wysłuchasz, usłyszysz coś w rodzaju popu lub petardy.

„Odpowiedź” jest wyjściem filtra (lub czegoś innego) otrzymuje impuls.

Na przykład możesz posłuchać „odpowiedzi impulsowej pokoju”, wchodząc do pokoju, wykonując proste klaśnięcie ręką i słuchając echa. Zajęłoby trochę praktyki, aby klaśnięcie ręki było jak najbardziej „ostre”. Uzyskanie odpowiedzi impulsowej filtra jest takie samo, ale zamiast klaskać ręką używasz prostego impulsu, a zamiast pokoju masz filtr.

Jeśli spojrzysz na odpowiedź impulsową filtra lub pomieszczenia, zobaczysz, że wyjście impulsuje przez pewien czas po impulsie (a czasami również się wcześniej porusza). W pokoju słyszałeś to poruszenie jako echo. W filtrze poruszenie to jest bezpośrednio związane z częstotliwością i reakcją fazową filtra. W pomieszczeniu czas, w którym echo słyszysz, nazywa się „czasem pogłosu” - nie ma odpowiedniego terminu dla filtra, ale jest on częścią odpowiedzi impulsowej.

Teraz filtr FIR (Finite Impulse Response) jest skończony, ponieważ czas odpowiedzi impulsowej jest ograniczony przez matematykę. Matematycznie niemożliwe jest, aby czas odpowiedzi impulsu przekroczył liczbę uderzeń w filtrze - dlatego jest skończony .

Natomiast filtr IIR nie ma tego matematycznego ograniczenia w czasie odpowiedzi impulsowej. Jeśli otrzyma się nieskończoną matematyczną precyzję, filtr IIR może poruszać wyjściami na zawsze. Oczywiście, w sensie praktycznym, nigdy nie trwa to wiecznie, ponieważ w pewnym momencie drganie staje się mniejsze niż precyzja zastosowanej matematyki, a więc znika.


dziękuję za miłe wyjaśnienie! Gdzie odbywa się informacja zwrotna w IIR?
GorillaApe,

2
@Parhs: sprzężenie zwrotne ma miejsce, ponieważ prąd wyjściowy jest uzyskiwany z poprzednich wartości wejściowych i wyjściowych , podczas gdy dla filtra FIR dane wyjściowe są uzyskiwane tylko z poprzednich wartości wejściowych .
Paul R

1
@Parha Informacja zwrotna jest efektem ubocznym topologii. A przez topologię rozumiem coś w rodzaju schematu przepływu lub „schematycznego” widoku filtra. Zasadniczo wyniki operacji matematycznej na jednym etapie zasilają inną operację na poprzednim etapie. Takie jest sprzężenie zwrotne. Większość osób uważa, że ​​FIR jest łatwiejszy w użyciu, ponieważ nie mają takiej opinii. To sprzężenie zwrotne jest trudne do poprawnego działania, ale ma w tym dużą wydajność.

System IIR ma stan wewnętrzny, który „pamięta” poprzednie dane wejściowe przez cały czas. Sposób, w jaki to modelujesz, polega na albo zasileniu poprzednich wyjść z powrotem na prąd wyjściowy, takich jak ta bezpośrednia forma dwukwadratowa 1 , lub równoważnie pętli sprzężenia zwrotnego na wejściu, takiej jak ta bezpośrednia forma dwukanałowa kanoniczna.
Eryk Sun

11

Odpowiedź impulsowa jest sygnaturą filtra. W przypadku filtra FIR odpowiedź impulsowa daje bezpośredni obraz współczynników filtra. Impuls jest pojedynczą próbką o maksymalnej amplitudzie, wszystkie próbki przed i po są zerowe. (Jest to cyfrowy odpowiednik impulsu Diraca.)
W momencie impulsu jego wartość jest mnożona przez (patrz dolny schemat). Pozostałe próbki mają zero, więc wyjście y jest równe b 0 (przypuszczam, że maksymalna wartość impulsu wynosi 1). Jedna próbka później impuls przesunął się o jeden blok z - 1 i jest mnożony przez b 1 . Ponownie wszystkie pozostałe wartości są równe zero, więc wynikiem jest bb0yb0z-1b1 . I tak dalej. Podczas przesunięcia impulsów przez filtr masz kolejne wartości b I na wyjściu. Po N próbkach impuls jest usuwany z filtra, a sygnał wyjściowy ponownie staje się zerowy. W przypadku filtra IIR nie jest tak oczywiste wyprowadzanie współczynników filtra z odpowiedzi impulsowej. b1bja

IIR
W filtrze IIR (część) przetworzony sygnał jest przesyłany z powrotem do wejścia. Oznacza to, że zawsze będą jakieś resztki pętli sygnału. Jednak przez większość czasu ta część sygnału będzie coraz mniejsza i ostatecznie wyniesie zero, ale teoretycznie nigdy nie znika całkowicie. Poniższy schemat blokowy pokazuje filtr biquad, często stosowaną implementację filtra IIR. Lewa gałąź przyjmuje (opóźnione) wartości wejściowe, prawa gałąź działa (opóźnione) wartości wyjściowe. ( Blok reprezentuje opóźnienie próbki 1. Biquady często są kaskadowane. z-1

wprowadź opis zdjęcia tutaj

FIR
filtrów FIR z drugiej strony mają liniową drogę od wejścia do wyjścia. Po próbkowaniu N sygnał wejściowy (jak impuls Diraca) zostanie przesunięty i to już koniec.
Filtry FIR są z natury stabilne, podczas gdy filtry IIR niekoniecznie.

wprowadź opis zdjęcia tutaj


1
że zapętlenie singla może być niebezpieczne, dając w niektórych przypadkach niepożądane wyniki?
GorillaApe,

2
Zdecydowanie może. Użyj niewłaściwych ścieżek sprzężenia zwrotnego lub zysków, a będziesz mógł stworzyć niestabilny filtr lub taki, który na zawsze usunie falę sinusoidalną. Zasadniczo nie jest to „filtr”, dlatego istnieją techniki analizy stabilności i unikania niestabilności.
Olin Lathrop,

Czy suma wszystkich terminów zwrotnych musi być sprzężona z początkiem łańcucha zwrotnego, czy też wyniki z późniejszych terminów można zsumować w danych wejściowych do późniejszych terminów? Oczekiwałbym, że każdy filtr, który można zrealizować w ten drugi sposób, może przekształcić się w formę, którą zilustrowałeś, ale chciałbym, aby istniała przydatna podklasa filtrów IIR, które można utworzyć z kaskadowych filtrów pierwszego rzędu (gdzie każdy wyjście każdego wyrażenia po prawej stronie można się wyżywić, ale żaden z jego poprzedników)
SuperCat

1
-za1-za2)

@stevenvh: Jak zauważyłem w mojej odpowiedzi, istnieje przydatny podzbiór filtrów IIR, w którym etap może powrócić do siebie, ale nie do poprzedniego etapu; Nie wiem, czy przeczytałem termin opisujący takie filtry, ale są one znacznie łatwiejsze do scharakteryzowania niż uogólnione filtry IIR. Chociaż można je renderować przy użyciu odpowiednich współczynników w powyższej formie, trudniej byłoby rozpoznać taki filtr (czy istnieje dla nich termin?) W tej formie.
supercat

4

Istnieją dwie szerokie klasy filtrów cyfrowych, nieskończona odpowiedź implode (IIR) i skończona odpowiedź impulsowa (FIR). Ponownie, ogólnie, filtry IIR są oparte na równaniach, a filtry FIR - na tabelach.

Filtry IIR są bardziej podobne do filtrów analogowych w świecie rzeczywistym. Rozważmy na przykład prosty rozkład wykładniczy, taki jak w przypadku analogowego filtra dolnoprzepustowego RC. Reakcja wyjściowa na wejście krokowe jest wykładnicza, która jest coraz bliżej wejścia. Zauważ, że wykładniczy nigdy tak naprawdę nie dociera do wyjścia, tylko na tyle blisko, że nie przejmujemy się ani nie możemy zmierzyć błędu. W tym sensie taki filtr jest nieskończony. Filtr IIR ma te same cechy.

Bardzo powszechny jednobiegunowy filtr dolnoprzepustowy IIR można wyrazić jako:

FILT <- FILT + FF (NOWOŚĆ - FILT)

Oznacza to, że każda iteracja wyjścia jest przenoszona o ustalony ułamek (FF, „ułamek filtra”) na odległość do wejścia. Łatwo to sobie wyobrazić, gdy FF = 1/2. Jeśli wszystko ma wartość 0, a sygnał wejściowy nagle przechodzi do 1 i pozostaje tam (krok jednostkowy), wówczas wartość wyjściowa wyniesie 1/2, 3/4, 7/8, 15/16 itd. To jest nieskończona seria. Ostatecznie wartość będzie tak bliska 1, że zostanie wyrażona jako 1, ponieważ wartości cyfrowe w komputerze nie mają nieskończonej precyzji.

Filtry FIR działają na zupełnie innej zasadzie. Skończony ostatni fragment sygnału wejściowego jest zapisywany, a każda z zapisanych wartości jest mnożona przez inny współczynnik, a następnie wszystkie wyniki dodawane w celu uzyskania filtru wyjściowego dla tej iteracji. Następna iteracja najstarszej zapisanej wartości jest odrzucana, pozostałe są przesuwane o jedno miejsce starsze, a nowe dane wejściowe są umieszczane w zwolnionym miejscu. Nowy zapisany fragment kodu jest następnie mnożony przez współczynniki itp. Proces ten nazywany jest „splotem”, a tabela współczynników jest często nazywana jądrem filtra. Przy pomocy tego rodzaju filtrów można zrobić kilka wymyślnych i użytecznych rzeczy, tworząc kreatywność przy użyciu współczynników. To cały temat na swój temat, do którego nie będę teraz wchodził. Ponieważ jednak skończony fragment danych wejściowych jest przechowywany w pamięci, jakakolwiek część sygnału wejściowego może wpływać na sygnał wyjściowy tylko przez określony czas. Gdy próbka wejściowa zostanie przesunięta na koniec przechowywanego fragmentu kodu, zniknie i nie będzie już miała wpływu na wynik.

Na ten temat napisane są całe książki i możesz spędzić kilka semestrów kursów uniwersyteckich, zagłębiając się w to głębiej. Mam nadzieję, że mój 30-sekundowy przegląd wystarcza, by odpowiedzieć na twoje pytanie.


1

Jedną z kwestii, o których jeszcze nie wspomniano, jest to, że filtry IIR można dalej podzielić na dwa style: te, w których etapy można uszeregować w taki sposób, że każdy etap jest całkowicie zależny od jego własnych poprzednich wartości i tych z wcześniejszych etapów oraz te, w których etapy nie mogą być klasyfikowane (ponieważ dwa lub więcej etapów jest od siebie zależnych). Etapy w filtrze FIR mogą odwoływać się do poprzednich wyników innych etapów, pod warunkiem, że można je uszeregować jak w poprzednim stylu IIR, a żaden etap nie odnosi się do jego wcześniejszych wyników.

Jeśli stopnie w filtrze IIR można uszeregować i jeżeli całkowita wartość współczynników sprzężenia zwrotnego dla danego stopnia jest mniejsza niż jeden, gwarantuje się, że filtr IIR jest stabilny. Jeśli, na przykład, stopień zawiera pewną ilość sygnału z poprzednich stopni, plus połowę poprzedniej wartości tego stopnia i 1/4 poprzedniej wartości, minus 1/8 poprzedniej wartości, całkowita wielkość siebie sprzężenie zwrotne będzie wynosić 7/8, więc przy braku dalszych danych z niższych etapów wielkość wkładu z samo-sprzężenia zmniejszałaby się o 12,5% przy każdej iteracji.


0

FIR, wykonuje swoją matematykę na skończonej liczbie elementów, powiedzmy 32 lub 12 lub pewną liczbę, ale to właśnie robi matematyka, bierze skończoną liczbę elementów i wykonuje filtr tylko na tych.

IIR dokonuje obliczeń matematycznych na wszystkich próbkach, które podajesz. Jeśli nakarmisz go 10 próbkami i zatrzymasz, to zadziała na 10 próbkach, jeśli karmisz go 1 000 000 000 próbek, matematyka działała na 1 000 000 000 próbek. A jeśli pozostawisz rzecz działającą w nieskończoność, zbliżającą się do nieskończoności (pozwól jej działać wiecznie), wówczas liczba elementów jest nieskończona zbliżająca się do nieskończoności. Ponieważ słowo skończone wyraźnie odnosi się do drugiego modelu, a model IIR ma nie mieć skończonej liczby próbek, słowo nieskończone jako przeciwieństwo skończonego po prostu brzmi lepiej niż nieokreślone lub jakieś inne podobne słowo.


„operowano na 1 000 000 000 próbek”. Cóż, nie bezpośrednio. Ponieważ część danych wyjściowych jest wykorzystywana w obliczeniach dla następnej próbki, zawsze będą ślady poprzednich próbek. Filtr zawsze będzie przechowywał bardzo ograniczoną liczbę próbek. I to nie jest „nieokreślone”; jest deterministyczny, nawet jeśli może być niestabilny.
stevenvh

to właśnie sugerowałem, że każda próbka ma pewne, ale niewielkie efekty ze wszystkich próbek, które ją poprzedziły, dla IIR.
old_timer

Nieskończona vs. skończona liczba elementów w obliczeniach nie jest różnicą między IIR a FIR. Najprostszy IIR działa tylko na 2 elementach danych: 1 z wejścia, 1 z wyjścia.
radagast

Nieskończoność nie pochodzi z liczby danych wejściowych, ale z liczby zakumulowanych cykli, skończona pobiera tylko N liczby próbek dla pojedynczego wejścia w matematyce, nieskończoność skutecznie działa na każdym cyklu. Skończona liczba cykli a nieskończona liczba cykli dla pojedynczego wejścia.
old_timer
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.