Warum ergibt ein engeres Fenster in einer Fourier-Transformation oder STFT eine schlechte Frequenzauflösung?

7

In der Theorie von FT (Fourier-Transformation) und STFT (Kurzzeit-Fourier-Transformation) heißt es: "Ein breites Fenster ergibt eine bessere Frequenzauflösung, aber eine schlechte Zeitauflösung. Ein schmaleres Fenster ergibt eine gute Zeitauflösung, aber eine schlechte Frequenzauflösung."

Kann jemand erklären, warum ein schmaleres Fenster eine schlechte Frequenzauflösung ergibt?

Nrupatunga
quelle

Antworten:

4

Die anderen Antworten sind gut, aber ich dachte, ich würde versuchen, eine intuitivere / visuellere Antwort zu geben, da ich ein intuitiver / visueller Typ bin.

Das Bild unten zeigt zwei Töne, die fast die gleiche Frequenz haben. Ein Ton ist rot und der andere blau dargestellt.

Kurzes Fenster

Ich habe das Bild in Matlab mit folgendem Code erstellt:

tone1 = sin(2*pi*.05 * (0:99));
tone2 = sin(2*pi*.0501 * (0:99));
plot(tone1)
hold on
plot(tone2, 'r')

Wie Sie sowohl auf dem Bild als auch im Code sehen können, sind die beiden Töne sehr nahe beieinander. Gegen Ende dieses kurzen Fensters beginnen sie sich ein wenig zu trennen, aber sie sind sich immer noch sehr ähnlich, bis zu dem Punkt, an dem eine DFT sie nicht unterscheiden konnte.

Wenn ich dieselben Töne mit denselben Frequenzen erstelle, verlängere ich nur das Fenster (diesmal 5000 Samples statt 100). Wir erhalten ein ganz anderes Bild. Offensichtlich wird es mehr Zyklen in jedem Ton geben ...

Langes Fenster

... aber das ist nicht der interessante Teil. Wir sehen den interessanten Teil, wenn wir am Ende des Fensters hineinzoomen.

Zoom mit langem Fenster

Wir sehen, dass die beiden Töne am Ende des Fensters um 180 Grad phasenverschoben sind, wodurch sie sehr leicht zu unterscheiden sind. Woher wusste ich, dass ich 5000 Proben auswählen sollte? Der Unterschied zwischen den beiden Tönen beträgt , also Samples radians..0002πreindicheinnsseinmple5000.0002πreindicheinnsseinmple=π

Wie eine andere Antwort erwähnt, ist die Auflösung der DFT die Abtastfrequenz geteilt durch die Anzahl der Abtastungen (dh die Fensterlänge). Ich habe implizit die Abtastfrequenz 1 festgelegt. Wenn wir also 1 durch 5000 (die Anzahl der Abtastwerte) teilen, erhalten wir, dass die Auflösung 0,0002 Hz beträgt. Unsere Töne unterscheiden sich tatsächlich um 0,0001 Hz, was bedeutet, dass Ton2 sowohl im Ton1-Bin als auch im Bin daneben Energie hat (und ein bisschen auch in allen anderen, aber das ist eine andere Geschichte).

Jim Clay
quelle
3

Bei der Berechnung der Frequenzauflösung oder Bin-Breite einer DFT lautet die Formel wie folgt:

frequency_resolution = sample_rate/fft_size

Angenommen, Sie haben ein Audiosignal mit einer Abtastrate von 8000 Hz, möchten aber eine wirklich hohe Frequenzauflösung. Sie haben nur 8000 Samples für eine Sekunde, aber Sie möchten eine 32K-FFT verwenden, um eine wirklich hohe Frequenzauflösung zu erhalten. Wenn Sie eine 32K-FFT einer Sequenz von 8000 Samples nehmen, müssen Sie die Sequenz mit einer Tonne Nullen auffüllen, um die FFT zu füllen. Dies hat keinen Mehrwert. Obwohl Sie im Frequenzbereich eine hohe Auflösung erhalten, gibt es nicht genügend Beispielunterstützung, sodass nur Daten interpoliert werden. Das Frequenzbereichsdiagramm ist glatt und interpoliert.

Angenommen, Sie haben viele Daten, aber viele Daten benötigen Zeit, um das FFT-Register zu füllen. Angenommen, Ihre Abtastrate beträgt 8000, aber Sie möchten eine wirklich hohe Auflösung und warten darauf. Sie warten 4 Sekunden, um diese 32K-FFT zu füllen. Wenn Sie diese FFT nehmen, müssen Sie sie nicht mehr mit Nullen füllen. Wenn Sie sich also den Plot ansehen, werden diese Bins nicht interpoliert, sondern von vielen Daten unterstützt, weil Sie darauf gewartet haben.

Das ist der Unterschied. Wenn Sie eine lange FFT mit geringer Stichprobenunterstützung haben, erhalten Sie interpolierte Daten. Das ist also der Zeit-Frequenz-Kompromiss, von dem Sie sprechen. Wenn Sie eine hohe Auflösung wünschen, benötigen Sie Daten, um diese zu unterstützen.

verkürzen
quelle