Was für ein Filter ist das? Ist es IIR?

9

Ich versuche folgende Frage zu beantworten:

Ist das System durch Gleichung beschrieben:

y[n]=0.5y[n1]+x[n]0.5x[n1]

ein IIR- Filter? Meine Antwort lautet ja.

Danke

Schwarzer Yasmin
quelle
1
Es gibt eine Klasse von FIR-Filtern, die als TIIR-Filter (Truncated IIR) bezeichnet werden. Sie können das googeln und Sie werden Sachen von Julius Smith und Avery Wang finden. Ein weiteres Beispiel für TIIR-Filter ist der Moving Sum- oder Moving Average-Filter oder der CIC-Filter (alle ziemlich unterschiedliche Namen für dasselbe Objekt). Was dieses rekursive Filter zu einer FIR macht, ist die Pol-Null-Aufhebung. Wie implementiert, gibt es interne Pole, und wenn sie instabil wären, könnte der Filter im Inneren explodieren, aber Sie würden ihn nicht in der Ausgabe sehen, bis die numerischen Grenzen überschritten wurden.
Robert Bristow-Johnson
1
Was sind die numerischen Grenzen?
Black Yasmin
hängt vom numerischen Typ (float oder fixed) und der Wortbreite ab. Dieses Zeug kann nachgeschlagen werden. . (sagen wir, für IEEE-754 Hin- und Herbewegungen für feste, hängt es davon ab , wie viele Bits, , sind der Binärpunkt links; etwa ± 2 n I - 1 .nI±2nI1
Robert Bristow-Johnson -
Nochmals vielen Dank, meine Herren, für jede Hilfe! Es hilft sehr Ich bin froh, dass ich diese Website gefunden habe
Black Yasmin
2
@AnthonyParks: Sie sagen : " Warum machen die Leute das kompliziert ? Dies ist eindeutig ein IIR, weil der erste Term des Filters einen Feedback-Anteil hat. " Ich sage : " Warum machen sich die Leute nicht die Mühe, die Grundkonzepte von DSP zu verstehen ?" IIR-Filter impliziert immer die rekursive Form, aber FIR bedeutet nicht unbedingt, dass der Filter nicht rekursiv ist. Das ist die einzig richtige Antwort und Sie verwirren die Konzepte hier. Wenn dies die Prüfungsfrage wäre, würden Sie scheitern, wenn Sie sagen, dass es sich um eine IIR handelt. Oppenheim erklärt dieses Thema in seinem Buch über DSP.
Jojek

Antworten:

18

Dies ist der FIR- Filter, obwohl er wie ein IIR aussieht. Wenn Sie die Koeffizienten berechnen, erhalten Sie eine endliche Impulsantwort:

h=[1]

Dies geschieht aufgrund einer nullpoligen Löschung:

Y(z)0.5Y(z)z1=X(z)0.5X(z)z1

H(z)=Y(z)X(z)=10.5z110.5z1=1

y[nk]

jojek
quelle
1
danke für die anerkennung! Ich wurde getäuscht, IIR zu sagen, ohne jemals die Koeffizienten genau zu betrachten ... Ich habe meine Antwort gelöscht.
Fat32
Wenn Sie die Gleichungen wie ursprünglich angegeben implementieren, verhält sie sich jedoch aufgrund von Effekten endlicher Wortlängen nicht genau wie H (z) = 1 (obwohl die Pol-Null-Aufhebung in diesem Fall genau ist).
Oscar
Das ist wahr, @Oscar, aber dies sind numerische Probleme, die nichts damit zu tun haben, dass der Filter F / IIR ist.
Jojek
1
@jojek: du bist natürlich völlig korrekt. Die Verwendung rekursiver FIR-Filter verursacht jedoch einige Probleme, wenn Sie sich dieser Dinge nicht bewusst sind (was viele, sogar "hochqualifizierte" Forscher sind). Daher mein Kommentar. Idealerweise sollte auch eine Diskussion zwischen Algorithmus und Übertragungsfunktion stattfinden.
Oscar
jojek ich lese deine antwort von dieser frage, die du beantwortet hast, aber ich kann nicht kommentieren. dsp.stackexchange.com/questions/17605/… kann ich ein anderes Fenster verwenden?
Black Yasmin
14

Jojeks Antwort ist natürlich richtig. Ich möchte nur einige weitere Informationen hinzufügen, da ich die Begriffe "IIR" und "rekursiv" viel zu oft verwirrt gesehen habe. Die folgenden Implikationen gelten immer:

IIRrecursivenon-recursiveFIR

dh jedes IIR-Filter (dh ein zeitdiskretes Filter mit einer unendlich langen Impulsantwort) muss rekursiv implementiert werden (es sei denn, Sie haben unendlichen Speicher verfügbar), und jedes nicht rekursive LTI-System hat eine endliche Impulsantwort (wiederum, es sei denn, Sie haben unendlich Erinnerung).

Das Gegenteil ist jedoch im Allgemeinen nicht der Fall. Ein rekursiver Filter kann eine endliche Impulsantwort haben, wie dies für das Beispiel in der Frage der Fall ist. Ein weiteres bekanntes Beispiel ist ein Filter mit gleitendem Durchschnitt. Dies ist eine nicht rekursive Implementierung eines gleitenden Durchschnitts (notwendigerweise FIR):

y[n]=1Nk=nN+1nx[k]

y[n]=y[n1]+1N(x[n]x[nN])
Matt L.
quelle
1
Prägnant und genau wie immer, +1;) Vielen Dank, dass Sie den MA-Fall angesprochen haben.
Jojek
1
@jojek: Ja, ich denke es ist ein Klassiker, den jeder kennen sollte.
Matt L.
Und während ich in dem Kommentar zu Jojeks Antwort hauptsächlich an Rundungsgeräusche dachte, wird für MA ein Überlauf ein potenzielles Problem sein, das sorgfältig abgewogen werden muss. Leicht zu lösen durch Zweierkomplementarithmetik und genügend Wortlänge.
Oscar
1
@Oscar: Nun, nachdem ich eine sehr einfache Analyse mit doppelter Gleitkommapräzision durchgeführt hatte, bekam ich einen Fehler von 8.881784197001252e-16 . Dies erfolgt nach der Verarbeitung von 1 Jahr Audio bei einer Abtastfrequenz von 44,1 kHz. Eingabedaten sind ein Gaußsches Rauschen mit normalisierter Verteilung. Hier ist der Code, um das Ergebnis zu reproduzieren ! Klicken! (Es kann 3 Tage dauern). Vorausgesetzt, dies ist richtig, dann gibt es meines Erachtens keinen Grund zur Sorge.
Jojek
1
@jojek: Drei Dinge. 1) Ich bezog mich auf den gleitenden Durchschnittsfilter der Antwort, nicht auf den in der ursprünglichen Frage. 2) Ja, das ist für Audio in Ordnung (aber nicht genau, also kein Grund, "Nein" fett zu schreiben), aber ich bevorzuge, dass meine sicherheitskritische Signalverarbeitung unabhängig vom Eingangssignal mit synthetischen Eigenschaften funktioniert. 3) Das Interessante ist, dass der Filter, mit dem Sie simuliert haben, nicht die von mir beschriebenen Probleme aufweist (da sich der Pol innerhalb des Einheitskreises befindet, nicht darauf), sondern immer Rundungsfehler unabhängig von der Darstellung aufweist (die vermieden werden können im Fall des gleitenden Durchschnitts).
Oscar