Was ist der Vorteil von MATLABs Filtfilt?

30

MATLAB's filtfiltfiltert vorwärts und rückwärts, dh filtert, kehrt das Signal um, filtert erneut und kehrt dann erneut um. Anscheinend getan, um Phasenverzögerungen zu reduzieren? Was sind die Vor- / Nachteile einer solchen Filterung (ich denke, dies würde zu einer effektiven Erhöhung der Filterreihenfolge führen)?

Wäre es vorzuziehen, filtfiltimmer anstelle von filter(dh nur Vorwärtsfilterung) zu verwenden? Gibt es Anwendungen, bei denen dies erforderlich ist und bei denen es nicht verwendet werden sollte?


quelle
Verwenden Sie keine Nullphasenfilterung für Audio, da dies ein seltsames "Vorklingeln" verursacht. Die Minimalphasenfilterung ist natürlicher. ccrma.stanford.edu/~jos/filters/Linear_Phase_Really_Ideal.html
Endolith

Antworten:

34

Sie können es am besten im Frequenzbereich betrachten. Wenn die Eingangssequenz und die Impulsantwort des Filters ist, ist das Ergebnis des ersten Filterdurchlaufsx[n]h[n]

X(ejω)H(ejω)

mit und die Fourier-Transformationen von bzw. . Die Zeitumkehr entspricht dem Ersetzen von durch im Frequenzbereich. Nach der Zeitumkehr erhalten wir alsoX(ejω)H(ejω)x[n]h[n]ωω

X(ejω)H(ejω)

Der zweite Filterdurchlauf entspricht einer weiteren Multiplikation mit :H(ejω)

X(ejω)H(ejω)H(ejω)

was nach Zeitumkehr schließlich das Spektrum des Ausgangssignals ergibt

(1)Y(ejω)=X(ejω)H(ejω)H(ejω)=X(ejω)|H(ejω)|2

denn für reellwertige Filterkoeffizienten gilt . Gleichung (1) zeigt, dass das Ausgangsspektrum durch Filtern mit einem Filter mit dem Frequenzgang , der rein reellwertig ist, dh seine Phase ist Null und folglich gibt es Keine Phasenverzerrungen.H(ejω)=H(ejω)|H(ejω)|2

Das ist die Theorie. In der Echtzeitverarbeitung gibt es natürlich eine ziemlich große Verzögerung, da die Zeitumkehr nur funktioniert, wenn Sie eine Latenz entsprechend der Länge des Eingabeblocks zulassen. Dies ändert jedoch nichts an der Tatsache, dass es keine Phasenverzerrungen gibt, sondern lediglich eine zusätzliche Verzögerung der Ausgangsdaten. Für die FIR-Filterung ist dieser Ansatz nicht besonders nützlich, da Sie genauso gut einen neuen Filter und mit gewöhnlicher Filterung das gleiche Ergebnis erzielen können. Es ist interessanter, diese Methode mit IIR-Filtern zu verwenden, da sie keine Nullphase (oder lineare Phase, dh eine reine Verzögerung) haben können.h^[n]=h[n]h[n]

In Summe:

  • Wenn Sie einen IIR-Filter haben oder benötigen und keine Phasenverzerrung wünschen, und die Verarbeitungsverzögerung kein Problem ist, ist diese Methode nützlich

  • Wenn es um Verarbeitungsverzögerungen geht, sollten Sie diese nicht verwenden

  • Wenn Sie über einen FIR-Filter verfügen, können Sie problemlos eine neue FIR-Filterantwort berechnen, die der Verwendung dieser Methode entspricht. Beachten Sie, dass mit FIR-Filtern immer eine exakt lineare Phase realisiert werden kann.

Matt L.
quelle
Ich habe ein Tag mit dem Namen erstellt maximum-aposteriori-estimation. Könnten Sie es bitte in umbenennen maximum-a-posteriori-estimation? Aus Versehen vergaß ich das -nach dem a. Danke dir.
Royi
15

Ich fand dieses Video sehr, sehr hilfreich (es geht auf Matts Antwort ein).

Hier sind einige wichtige Ideen aus dem Video:

  • Die Nullphase führt zu keiner Phasenverzerrung, aber zu einem nicht kausalen Filter. Dies bedeutet, dass, wenn die Daten beim Sammeln gefiltert werden, dies keine Option ist (nur gültig für gespeicherte Daten, die wir nachbearbeiten können).Bildbeschreibung hier eingeben
  • Wenn Sie einen nicht-kausalen Filter implementieren, werden Transienten vorwärts und rückwärts unscharf (z. B. wenn wir eine 2-dB-Welligkeit wünschen, bedeutet die Tatsache, dass wir mit dem Filter einen Vorwärts- und Rückwärtslauf durchführen, dass wir jeden von ihnen wollen diese haben 1dB).Bildbeschreibung hier eingeben
  • Verwendet die Zeitumkehr-Eigenschaft der zeitdiskreten Fourier-Transformation. Bildbeschreibung hier eingeben
  • Der effektive Frequenzgang, der durch FILTFILT verursacht wird, ist die Größe desjenigen in einer Richtung, im Quadrat. Sie nehmen Ihr Eingangssignal x[n], filtern es, kehren das Ergebnis um, filtern es erneut und kehren es erneut um (für den Zeitumkehrschritt müssen alle Daten verfügbar sein).Bildbeschreibung hier eingeben
aralar
quelle