FFT vs. STFT

FFT vs. STFT: Jeweilige Eignung zur Signalanalyse

Übersicht

Die schnelle Fourier-Transformation (FFT) und die Kurzzeit-Fourier-Transformation (STFT) sind grundlegende Werkzeuge zur Analyse von Signalen im Frequenzbereich. Die FFT ist ein effizienter Algorithmus zur Berechnung der diskreten Fourier-Transformation (DFT). Sie konvertiert Amplituden-Zeit-Daten in Amplituden-Frequenz-Daten. Die FFT zeigt, welche Frequenzkomponenten im Signal vorhanden sind und deren relativen Beträge.

Die STFT erweitert diese Idee und wendet die FFT auf kurze Segmente eines Signals an. Dadurch lässt sich zeigen, wie sich der Frequenzinhalt im Lauf der Zeit ändert. Dies führt zu einer Zeit-Frequenz-Darstellung, die häufig als Spektrogramm visualisiert wird.

Verwenden Sie die FFT, wenn der Frequenzinhalt im Analyseintervall relativ konstant bleibt. Verwenden Sie die STFT, wenn sich der Frequenzinhalt im Lauf der Zeit ändert und Sie wissen müssen, wann eine konkrete Frequenz auftritt.

Vergleich von FFT und STFT

Typ FFT (schnelle Fourier-Transformation) STFT (Kurzzeit-Fourier-Transformation)
Am besten geeignet bei Stationären Signalen, bei denen der Frequenzinhalt konstant bleibt Nicht stationären Signalen, bei denen sich die Frequenzen im Lauf der Zeit ändern
Ausgabedaten 1D-Array der Frequenzbeträge 2D-Array der Frequenzbeträge gegen Zeit (häufig als Spektrogramm visualisiert)
Auflösung Maximale Frequenzauflösung basierend auf der gesamten Signallänge; keine Auflösung in der Zeit $$ \Delta f = \frac{f_s}{N} $$ Kompromiss zwischen von der Fenstergröße vorgegebener Zeit- und Frequenzauflösung \(N\) (Heisenbergsches Unbestimmtheitsprinzip) $$\Delta f = \frac{f_s}{N} \qquad \Delta t = \frac{N}{f_s} $$
Berechnung Effiziente Berechnung mit Zeitkomplexität \(O(n \log n)\) Mehrere FFT-Berechnungen; gesamte erforderliche FFTs hängen von Fensterlänge und Überlappung ab

Zeit-Frequenz-Auflösung

Die FFT beschreibt den Frequenzinhalt im gesamten Analysefenster. Sie zeigt, welche Frequenzkomponenten es gibt und mit welchen Beträgen, aber nicht wann. Die FFT liefert die höchste Frequenzauflösung der beiden Techniken, aber keine Zeitinformation.

Die STFT führt die Zeitinformation auf Kosten der Frequenzauflösung ein. Sie beschreibt, wann die Frequenz vorhanden ist, trübt aber die Informationen über diese Frequenzen. Diese fundamentale Eigenschaft, dass Zeit und Frequenz nicht gleichzeitig lokalisierbar sind, wird vom Heisenbergschen Unbestimmtheitsprinzip beschrieben.

Berechnungskomplexität und Eignung der jeweiligen Methode

Die FFT verbessert die DFT-Zeitkomplexität für große \(N\), von \(O(n^2)\) zu \(O(n \log n)\), wobei \(n\) die Anzahl der DFT-Punkte ist. Die STFT erfordert mehrere FFT-Berechnungen. Die Anzahl der FFT-Berechnungen hängt von der Analyserate und der für die STFT-Berechnung gewählten Fensterüberlappung ab. Die Berechnung der STFT eines Signals erfordert also mehr Berechnungen als die der FFT für ein vorgegebenes Signal. Die FFT eignet sich am besten für stationäre Signale, beispielsweise die Schwingungsanalyse mit stabilen Frequenzen oder Kommunikationssignale in einem konkreten Frequenzband. Die STFT eignet sich am besten für nicht stationäre Signale, beispielsweise Audio- und Biomedizin-Signale.

FFT und STFT in MATLAB

\( Y = \operatorname{fft}(X) \) ist die gängigste Syntax zur Berechnung der FFT in MATLAB. Ist \(X\) ein Zeitdomänensignal, dann wird \(Y\) als Frequenzdomänendarstellung zurückgegeben. Der Betrag jedes Elements von \(Y\) kann gegen die Frequenz aufgetragen werden, um die Amplitude jeder Frequenzkomponente zu visualisieren.

Eine gängige Visualisierungsmethode zur Spektralanalyse ist das Periodogramm. Ein Periodogramm visualisiert the spektrale Leistungsdichte des Signals und zeigt dabei die Leistung pro Frequenzeinheit.

Leistungsspektrumsdiagramm eines Periodogramms mit Frequenzspitzen und einer eingesetzten Datentabelle

Das Periodogramm einer Sinuskurve, die einen Leistungsverstärker durchlaufen hat. Das Periodogramm zeigt, dass die Nichtlinearität im Verstärker harmonische Verzerrungen erzeugt hat. Oberwellen sind das Vielfache der Grundfrequenz.

\( S = \operatorname{stft}(X) \) ist die Basissyntax zur Berechnung der STFT in MATLAB. Ist \(X\) das Zeitdomänensignal, wird \(S\) als Matrix zurückgegeben, wo die Zeit im Spaltenverlauf von \(S\) zu- und die Frequenz im Zeilenverlauf zunimmt. Die Standardparameter für die STFT beinhalten ein Hann-Fenster der Länge 128, eine FFT-Länge von 128 und ein 75%ige Fensterüberlappungslänge. Die STFT wird als Spektrogramm visualisiert, um die Zeit-Frequenz-Informationen anzuzeigen.

Blaues Spektrogramm mit vier akustischen Signalen: ein vertikales Impulsmuster, gefolgt von drei übereinandergeschichteten, horizontalen, harmonischen Frequenzbändern.

Das Spektrogramm zeigt die Audioaufnahme eines Walgesangs. Die Audioaufnahme ändert sich im Lauf der Zeit und zeigt, wie der Wal die gesungenen Töne verändert.

Entscheidung für FFT oder STFT

FFT und STFT sind sich ergänzende Techniken zur Signalanalyse. Verwenden Sie die FFT, wenn Sie die höchste Frequenzauflösung benötigen und der Spektralinhalt des Signals relativ konstant bleibt. Nehmen Sie die STFT, wenn sich der Frequenzinhalt im Lauf der zeit ändert und die Kenntnis des Zeitpunkts, an dem ein Ereignis auftritt, ebenso wichtig ist wie die Ermittlung seiner Frequenzen.



Häufig gestellte Fragen zu FFT vs. STFT

Die FFT wandelt ein Signal aus der Zeit- in die Frequenzdomäne um und zeigt, welche Frequenzkomponenten es im gesamten Signal gibt. Die STFT wendet die FFT auf kurze Segmente eines Signals an und deckt auf, wie sich der Frequenzinhalt im Lauf der Zeit ändert.

Verwenden Sie die FFT, wenn der Frequenzinhalt des Signals im Analyseintervall relativ konstant bleibt und Sie die höchstmögliche Frequenzauflösung benötigen. Gängige Beispiele sind die Schwingungsanalyse mit stabilen Frequenzen und Kommunikationssignale in einem konkreten Frequenzband.

Verwenden Sie die STFT, wenn sich der Frequenzinhalt im Lauf der Zeit ändert und Sie wissen müssen, wann eine konkrete Frequenz auftritt. Sie eignet sich am besten für nicht stationäre Signale, beispielsweise Audio- und Biomedizin-Signale.

Ein Spektrogramm ist eine Visualisierung der STFT-Ausgabe, die ein Raster mit Amplituden anzeigt mit der Zeit auf der einen Achse und der Frequenz auf der anderen. Gezeigt wird die Änderung des Frequenzinhalts eines Signals. Beispielsweise kann die Spektrogrammfunktion von MATLAB den Zeit-Frequenz-Inhalt von Audiosignalen anzeigen.

Die Fensterlänge führt zu einem Kompromiss zwischen Zeit und Frequenzauflösung und unterliegt dem Heisenbergschen Unbestimmtheitsprinzip. Ein längeres Fenster bietet eine bessere Frequenzauflösung, während ein kürzeres Fenster besser schnelle Veränderungen im Frequenzinhalt im Lauf der Zeit erfasst.

Die Basissyntax lautet S = stft(X), wo X das Zeitdomänensignal ist und S als Matrix zurückgegeben wird, in der die Zeit im Spaltenverlauf zu- und die Frequenz im Zeilenverlauf zunimmt. Die Standardparameter beinhalten ein Hann-Fenster der Länge 128, eine FFT-Länge von 128 und ein 75%ige Fensterüberlappung.

Die gängigste Syntax ist Y = fft(X), wo X das Zeitdomänensignal ist und Y als seine Frequenzdomänendarstellung zurückgegeben wird. Der Betrag jedes Elements von Y kann gegen die Frequenz aufgetragen werden, um die Amplitude jeder Frequenzkomponente zu visualisieren.

Ja, denn die STFT erfordert mehrere FFT-Berechnungen in überlappenden Signalsegmenten, während die FFT nur eine einzelne Berechnung benötigt. Die Gesamtzahl der FFT-Berechnungen hängt von der Analyserate und der für die STFT-Berechnung gewählten Fensterüberlappung ab.

Die FFT erzeugt ein eindimensionales Array von Frequenzbeträgen ohne Zeitinformation. Die STFT führt zu einem zweidimensionalen Array von Frequenzbeträgen gegen Zeit, das häufig als Spektrogramm visualisiert wird.