Warum verwenden wir Fenster im Zeitbereich, anstatt das Spektrum durch FFT zu modifizieren und nicht durch inverse FFT?


16

Ich dachte, DSP würde durch Verwendung einer FFT von Teilen eines Signals durchgeführt, die aus der FFT resultierenden Abtastwerte modifiziert (da sie das Spektrum unseres Signals + Rauschens darstellen) und alle unerwünschten Signale entfernt und dann eine inverse FFT durchgeführt, um eine Zeit zu erhalten Domänendarstellung des gefilterten Signals (Rauschen wurde entfernt). Dies wird jedoch nicht durchgeführt, sondern wir erledigen die gesamte Arbeit im Zeitbereich mithilfe von Fensterfunktionen. Warum?

Wenn wir die Fensterfunktion im Zeitbereich multiplizieren, als wir den Frequenzgang der Fensterfunktion mit dem Spektrum unseres Signals im Frequenzbereich falten, wie funktioniert das? Ich meine, wenn wir nur die ganze Arbeit im Frequenzbereich erledigt hätten, indem wir unser Signal mit dem Frequenzgang des Filters multipliziert hätten, wäre das wie Filtern, oder? Aber hier erledigen wir alles im Zeitbereich, anstatt window zu benutzen.

-> Mal sehen, woher meine Verwirrung kommt. Für analoge Filter, zB Tiefpassfilter, haben wir diesen impulsartigen Frequenzgang. Wenn wir ein Signal filtern, multiplizieren wir effektiv das Spektrum unseres Signals mit dem impulsartigen Frequenzgang des Filters. Dadurch werden alle Frequenzen in unserem Signal oberhalb eines Grenzwerts auf 0 reduziert. So funktioniert ein Tiefpassfilter im Wesentlichen. Warum nicht auch mit digitalen Filtern das Gleiche tun?


Antworten:


7

Die Fensterung verringert die spektrale Leckage.

Angenommen, Sie beginnen mit . Die Zeit ist offensichtlich 2 π / ω 0 . sin(y)=cos(ω0t)2π/ω0

2π/ω[0,1.8π/ω0]ω=ω0

Der Zweck des Fensters im Zeitbereich besteht darin, alle diese fiktiven Spektralkomponenten zu reduzieren.


12

Das Fenster wird verwendet, weil die DFT-Berechnungen auf der unendlichen periodischen Erweiterung des Eingangssignals basieren. Da viele tatsächliche Signale entweder überhaupt nicht periodisch sind oder über ein Intervall abgetastet werden, das von ihrer tatsächlichen Periode abweicht, kann dies zu falschen Frequenzkomponenten an der künstlichen "Flanke" zwischen wiederholten Intervallen führen, die als Leckage bezeichnet werden . Indem Sie zuerst das Zeitdomänensignal mit einer Fensterfunktion multiplizieren, die an beiden Enden auf Null geht, erzeugen Sie einen glatten Übergang zwischen wiederholten Intervallen in der unendlichen periodischen Erweiterung, wodurch die Erzeugung dieser künstlichen Frequenzkomponenten gemindert wird, wenn wir dann die DFT aufnehmen.

Dieser Artikel gibt einen tieferen Einblick in dieses Phänomen sowie einen Einblick in die Auswirkungen verschiedener Fensterfunktionen.


11

Ich denke, Sie verwechseln zwei verschiedene Operationen.

Das Fenster im Zeitbereich wird durch @sam erklärt, daher werde ich das nicht wiederholen. Es wird jedoch keine Fensterung durchgeführt, um eine Filterung durchzuführen. Das Filtern durch Multiplizieren der FFT eines Signals mit dem Filterfrequenzgang ist in vielen Situationen durchaus sinnvoll und wird in der Tat durchgeführt. Die Alternative zum Filtern ist die Zeitbereichsfaltung (die sich von der Fensterung unterscheidet). Dies hat seine eigenen Vorteile, z. B. das Bearbeiten eines Signals in "Echtzeit", da es gemessen wird, ohne darauf zu warten, dass das Ganze gespeichert und dann transformiert wird.

Auf Ihre Frage "Warum nicht auch mit digitalen Filtern das Gleiche tun?" Lautet die Antwort einfach "Wir tun es, wenn es passt".


Ich habe auch den Eindruck, dass Faltung und Fensterung in der Frage verwechselt wurden. Gut, dass du darauf hingewiesen hast!
Deve

11

Es gab mehrere gute Antworten auf diese Frage. Ich bin jedoch der Meinung, dass ein wichtiger Punkt nicht vollständig geklärt wurde. Ein Teil der Frage war, warum wir nicht einfach die FFT eines Signals mit der gewünschten Filterantwort multiplizieren. Wenn wir beispielsweise unser Signal tiefpassfiltern möchten, können wir einfach alle Frequenzkomponenten auf Null setzen, die höher als die gewünschte Grenzfrequenz sind. Dies ist in der Tat eine einfache Anwendung des bekannten Frequenzabtastverfahrens zum Entwerfen von FIR-Filtern. Das Problem ist, dass wir die von der FFT berechneten diskreten Frequenzkomponenten einfach auf Null setzen können. Wir haben keine Kontrolle darüber, was zwischen diesen diskreten Frequenzen passiert. Es stellt sich heraus, dass eine so einfache Version der Filterung nur eine geringe Sperrdämpfung ergibt (unabhängig von der FFT-Länge). Wenn Sie Zugang zu Matlab oder Octave haben,

x=2*rand(1024,1)-1;
X=fft(x);
Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter
y=real(ifft(Y)); % real() just to remove numerical errors
Y=fft(y,4096);
plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50])

6

Wenn Sie kein nicht rechteckiges Fenster verwenden, werden die FFT-Ergebnisse bereits mit der Transformation eines rechteckigen Standardfensters (ein periodischer Sinc) gefaltet, bevor eine Frequenzbereichsfilterung durchgeführt wird. ZB werden zwei Filter angewendet, von denen einer wahrscheinlich nicht gewünscht ist.

Durch die Fensterung im Zeitbereich vor der FFT- und Frequenzbereichsfilterung ersetzen Sie jede Filterung (sogenannte "Leckage") durch eine rechteckige Fensterung und erhalten somit keine zusätzliche unerwünschte Filterfaltung.

Der andere Weg, dies zu tun, ist die Verwendung von Überlappungs-Addier- oder Überlappungs-Speichermethoden für aufeinanderfolgende Fenster, bei denen die Effekte eines rechteckigen Fensters durch ähnliche Effekte aus den benachbarten Fenstern aufgehoben werden.


5

Fenster im Zeitbereich da

  • An den Fensterrändern können wir Null garantieren
  • Fensterfunktionen haben einen schönen analytischen Ausdruck im räumlichen Bereich
  • Viele Fensterfunktionen haben ein seltsam geformtes Spektrum, das sich nur schwer annähern lässt
  • es wird nur eine begrenzte Anzahl von Abtastwerten benötigt (Fensterung kann durchgeführt werden, während die Signale einströmen)

zB aus Wikipedia

Bildbeschreibung hier eingeben

Das harte Abschneiden der Fensterfunktionen auf Null bedeutet, dass sie im Spektralbereich Nebenkeulen haben, die sehr langsam auf Null gehen. Wenn wir diese Einschränkung aufheben, können wir Funktionen haben, die sowohl in räumlichen als auch in spektralen Bereichen kompakt sind, wie das Gaußsche Filter. Dies bedeutet, dass Sie über die Spektraldomäne filtern können, jedoch muss das gesamte Signal bekannt sein.

Wenn Sie das gesamte Signal bereits haben, besteht eine andere Alternative darin, Wavelets zu verwenden


2

Ich hatte die gleiche frage

Eine Faltung ist die ganzzahlige / kumulative Summe des Zeitbereichssignals multipliziert mit dem Fenster. Dies sollte nicht mit dem "Fenster" -Zeitbereichssignal verwechselt werden.

Das Ende dieses Artikels hat mir sehr geholfen.

Grundsätzlich heißt es, dass reale Signale endlich sind und ein plötzliches Abschneiden eines realen Signals zu vielen unerwünschten Frequenzen / Artefakten im Frequenzbereich führt.

Um diese Artefakte zu vermeiden / zu minimieren, können Sie eine glatte (z. B. glockenförmige) Fensterfunktion verwenden, sodass Ihre Probe mit einer Null beginnt und endet, anstatt abrupt mit einem Skalarwert ungleich Null zu enden.

Glatt abschneiden

Das obige Beispiel mit Fenster weist im Frequenzbereich weniger Artefakte auf als das darunter liegende Rohbeispiel.

Abrupt abgeschnitten


1

Es gibt zwei große Kategorien, die mit einer FFT verbunden sind: 1) eine effiziente Methode zur Implementierung eines FIR-Filters und 2) eine Spektralanalyse.

Beim FIR-Filtern kümmert man sich nicht um Fenster und verwendet sie nicht, es sei denn, das Fenster entspricht einem Filter, aber das ist nicht üblich. Leckage ist kein Problem.

Bei der Spektralanalyse werden Fenster verwendet. Hier sehen Sie sich einen Sensor an, der an einer großen Industriemaschine angebracht ist, und versuchen herauszufinden, ob tief im Inneren ein Lager ausfällt. Die Lager quietschen, wenn sie ausfallen, aber das Geräusch, das sie verursachen können, ist normalerweise viel geringer als die anderen Geräusche, die die Maschine erzeugt. Hier kommt die Leckage und die Mittelwertbildung ins Spiel. Bei starken Tönen wird die Leckage das schwache Signal überlagern, das wir nach ein paar Behältern suchen. Es verbessert die Empfindlichkeit der Spektralanalyse gegenüber schwachen Signalen bei starken Signalen. Ein ähnlicher Effekt tritt auf, wenn das Hintergrundgeräusch abfällt. Die Informationen, die wir suchen, befinden sich im Frequenzbereich. Dies ist das gleiche Problem in RADAR, SONAR und Geophysik. Das schwache Signal zu sehen ist das Ziel.


1

Das Fenstern im Zeitbereich ist erforderlich, um zu vermeiden, dass sich eine einzelne Frequenz, die sich nicht genau auf einem Frequenzbereich befindet, über das gesamte Spektrum ausbreitet. Vielleicht hilft diese Seite: http://www.sm5bsz.com/slfft/slfft.htm Linrad (mein 20 Jahre altes Projekt) verwendet eine FFT mit Fenstern und wendet dann einen Filter im Frequenzbereich an (machen Sie Null, was wir nicht wollen). Wenden Sie dann eine rückwärts gerichtete FFT an - aber jetzt auf eine viel kleinere Anzahl von Punkten. Es ist nicht erforderlich, alle Frequenzbereiche anzugeben, von denen wir wissen, dass sie Null sind !! Als Ergebnis erhalten wir eine Zeitfunktion mit einer viel kleineren Größe - das heißt mit einer viel geringeren Abtastrate. Die Prozedur filtert und dezimiert in einem Schritt. Dies ist sehr effizient, wenn mehrere Kanäle gleichzeitig herausgefiltert werden sollen. Die Linrad-Homepage ist hier: http://www.sm5bsz.com/linuxdsp/linrad.htm

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.