Ich habe in einem SO-Thread einen Vorschlag gesehen, filtfilt
der eine Rückwärts- / Vorwärtsfilterung anstelle von ausführt lfilter
.
Was ist die Motivation, eine gegen die andere Technik einzusetzen?
Ich habe in einem SO-Thread einen Vorschlag gesehen, filtfilt
der eine Rückwärts- / Vorwärtsfilterung anstelle von ausführt lfilter
.
Was ist die Motivation, eine gegen die andere Technik einzusetzen?
filtfilt
macht den gleichen Filter zweimal in entgegengesetzte Richtungen, also nicht langsamer alslfilter
zweimal in eine Richtung. Auf diese Weise erhalten Sie den gleichen Frequenzgang.Antworten:
filtfilt
ist eine Nullphasenfilterung, die das Signal beim Filtern nicht verschiebt. Da die Phase bei allen Frequenzen Null ist, ist sie auch linear. Wenn Sie in der Zeit rückwärts filtern, müssen Sie die Zukunft vorhersagen. Daher kann es nicht in "Online" -Anwendungen im echten Leben verwendet werden, sondern nur für die Offline-Verarbeitung von Signalaufzeichnungen.lfilter
ist nur eine kausale Vorwärts-in-Zeit-Filterung, ähnlich einem realen elektronischen Filter. Es kann nicht nullphasig sein. Sie kann linearphasig sein (symmetrische FIR), ist es aber normalerweise nicht. Normalerweise werden unterschiedliche Verzögerungswerte bei verschiedenen Frequenzen hinzugefügt.Ein Beispiel und ein Bild sollten es deutlich machen. Obwohl die Größe des Frequenzgangs der Filter identisch ist (oben links und oben rechts), stimmt der Nullphasentiefpass mit dem Originalsignal überein, nur ohne Hochfrequenzanteil, während die Minimalphasenfilterung das Signal auf kausale Weise verzögert :
quelle
lfilter
ist nicht unbedingt die Minimalphase, es kann alles in Abhängigkeit von den Filterkoeffizienten sein, aber in jedem Fall ist es kausal , wasfiltfilt
nicht ist. Das Ergebnis des Vergleichs,filtfilt
das eine Verzögerung von Null aufweist undlfilter
immer eine Verzögerung hinzufügt, ist also nicht genau richtig, dafiltfilt
es in erster Linie nicht kausal ist. Was tatsächlich zählt, ist,filtfilt
dass keine Phasenverzerrungen verursacht werden, wohingegen dies derlfilter
Fall ist (es sei denn, es wird als lineares Phasen-FIR-Filter verwendet, dh mit Nenner = 1).filtfilt
dem Filtern mit (2N-1) -ter Ordnung mit entsprichtlfilter
.lfilter
oder filternfiltfilt
. Sie verhalten sich anders, wie gezeigtAntwort von @endolith ist vollständig und richtig! Bitte lesen Sie zuerst seinen Beitrag und dann diesen zusätzlich dazu. Aufgrund meines schlechten Rufs konnte ich nicht auf Kommentare antworten, in denen @Thomas Arildsen und @endolith über die effektive Reihenfolge der Filter streiten, die erhalten wurden durch
filtfilt
:lfilter
Wendet ein gegebenes Filter an und im Fourier-Raum ist dies wie das EINMALIGE Anwenden der Filterübertragungsfunktion.filtfilt
Wenden Sie denselben Filter zweimal an, und der Effekt entspricht der Anwendung der Filterübertragungsfunktion SQUARED. Bei Butterworth-Filter (scipy.signal.butter
) mit Übertragungsfunktionder effektive Gewinn wird sein
quelle