Wie ist das Verhältnis zwischen FFT-Länge und Frequenzauflösung?

67

Wenn ich ein Signal mit geeigneten Abtastmethoden abgetastet habe (Nyquist, Filterung usw.), wie beziehe ich die Länge meiner FFT auf die resultierende Frequenzauflösung, die ich erhalten kann?

Wie würde ich, wenn ich eine Sinuswelle mit 2.000 Hz und 1.999 Hz habe, die Länge der FFT bestimmen, die benötigt wird, um den Unterschied zwischen diesen beiden Wellen genau zu erkennen?

Kellenjb
quelle

Antworten:

81

Die Frequenzauflösung ist abhängig von der Beziehung zwischen der FFT-Länge und der Abtastrate des Eingangssignals.

Wenn wir 8192 Samples für die FFT sammeln, haben wir:

8192 samples2=4096 FFT bins

Wenn unsere Abtastrate 10 kHz beträgt, besagt das Nyquist-Shannon-Abtasttheorem, dass unser Signal einen Frequenzgehalt von bis zu 5 kHz enthalten kann. Dann ist unsere Frequenzbereichauflösung:

5 kHz4096 FFT bins1.22 Hzbin

Dies ist möglicherweise die einfachere, aber vereinfachte Art der Erklärung: Ihre Bin-Auflösung ist einfach , wobei die Abtastrate des Eingangssignals und N die Anzahl der FFT-Punkte ist gebraucht (Stichprobenlänge).fsampNfsamp

Wir können aus dem Obigen ersehen, dass wir, um kleinere FFT-Bins zu erhalten, entweder eine längere FFT ausführen können (d. H. Mehr Samples mit der gleichen Rate nehmen, bevor die FFT ausgeführt wird) oder unsere Sampling-Rate verringern können.

Der Fang:

Es gibt immer einen Kompromiss zwischen zeitlicher Auflösung und Frequenzauflösung.

Im obigen Beispiel müssen 8192 Abtastwerte erfasst werden, bevor die FFT ausgeführt werden kann. Wenn bei 10 kHz abgetastet wird, dauert dies 0,82 Sekunden.

Wenn wir versuchen würden, kleinere FFT-Bins zu erhalten, indem wir eine längere FFT ausführen, würde das Sammeln der benötigten Samples noch länger dauern.

Das mag in Ordnung sein, es mag nicht sein. Der wichtige Punkt ist, dass bei einer festen Abtastrate eine zunehmende Frequenzauflösung die zeitliche Auflösung verringert. Je genauer Ihre Messung im Frequenzbereich ist, desto ungenauer können Sie im Zeitbereich sein. Sie verlieren effektiv alle Zeitinformationen innerhalb der FFT-Länge.

Wenn in diesem Beispiel ein 1999-Hz-Ton in der ersten Hälfte der 8192-Sample-FFT startet und stoppt und in der zweiten Hälfte des Fensters ein 2002-Hz-Ton abgespielt wird, sehen wir beide, aber sie scheinen gleichzeitig aufgetreten zu sein Zeit.

Sie müssen auch die Bearbeitungszeit berücksichtigen. Eine 8192-Punkt-FFT benötigt eine angemessene Verarbeitungsleistung. Eine Möglichkeit, diesen Bedarf zu verringern, besteht darin, die Abtastrate zu verringern. Dies ist die zweite Möglichkeit, die Frequenzauflösung zu erhöhen.

Wenn Sie in Ihrem Beispiel die Abtastrate auf etwa 4096 Hz senken, benötigen Sie nur eine 4096-Punkt-FFT, um 1-Hz-Bins zu erzielen * 4096 Hz. Sie benötigen nur eine 4096-Punkt-FFT, um 1-Hz-Bins zu erzielen, und können trotzdem a auflösen 2-kHz-Signal. Dies verringert die FFT-Bin-Größe, verringert jedoch auch die Bandbreite des Signals.

Letztendlich wird es bei einer FFT immer einen Kompromiss zwischen Frequenzauflösung und Zeitauflösung geben. Sie müssen einen kleinen Spagat machen, um alle Ziele zu erreichen.

Kennzeichen
quelle
Mit Header-Tags und einigen Formatierungen könnte dieser Beitrag von gut nach gut gehen. Sie haben alles angesprochen, was ich notieren wollte, und zwar sehr gut, aber die Art und Weise, wie der Beitrag formatiert ist, wird von weniger Personen gelesen, da seine Länge unerschwinglich ist das passt zu ihnen und deine Anzahl von +1 wird sich sehr erhöhen. Natürlich nicht von mir, wie du es dir schon verdient hast.
Kortuk
@kurtuk Ich spucke dieses in Eile aus, ich werde die Formatierung aufräumen, wenn ich etwas Freizeit habe (oder Sie können es gerne bearbeiten, wenn Sie möchten).
Mark
1
@kortuk, der Name beginnt mit einem 'o'. Ich bin davon ausgegangen, dass Sie dies getan haben, ich teile nur meine Ansicht, und zwar sowohl für Sie, wenn Sie es nicht bereits wussten, als auch für die gesamte Community.
Kortuk
1
Beachten Sie, dass Sie die FFT nicht berechnen müssen. Wenn Sie nur einige Bins kennen möchten, ist es billiger, die DFT nur dieser Bins zu berechnen, als eine optimierte FFT auszuführen, die alle Bins auf einmal berechnet, indem viele der Vorgänge gemeinsam genutzt werden.
Chris Stratton
Es ist auch anzumerken, dass ein ähnlicher Kompromiss zwischen Frequenz- und Zeitbereich für analoge und IIR-Filter gilt.
Caleb Reister
10

Grundlegende FFT-Auflösung ist , wobei die Abtastfrequenz ist.fsNfs

Die Fähigkeit, zwei sehr nahe beieinander liegende Signale zu unterscheiden, hängt stark von den relativen Amplituden und der verwendeten Fensterfunktion ab.

Sie werden vielleicht feststellen, dass das Spielen mit dem Baudline-Signalanalysator eine gute Möglichkeit ist, eine gewisse Intuition in dieser Angelegenheit zu entwickeln - und nein, einige FFTs auszuführen und jeweils ein Spektrum in Matlab oder Python / Numpy zu zeichnen, ist wirklich nicht dasselbe.

EDIT: Es gibt auch einen Trick, um den Eingang mit Nullen aufzufüllen und eine größere FFT zu nehmen. Dies wird Ihre Unterscheidungsfähigkeit nicht verbessern, das Spektrum jedoch möglicherweise besser lesbar machen. Dies ist im Grunde ein Trick, der dem Antialiasing in Vektorgrafiken ähnelt.

jpc
quelle
Bin ich der einzige, der den richtig formatierten Latex-Code nicht sieht?
Stevenvh
@ stevenvh Funktioniert bei mir auch nicht.
Terrasse
Funktioniert bei mir. Der Latex ist nur 2 Plätze.
Kortuk
2
Behoben (schon seit einiger Zeit). Das NoScript-Add-on von Firefox blockiert mathjax.org.
Stevenvh
3

Es ist erwähnenswert, dass eine FFT eine Alternative zur Berechnung mehrerer separater Summenpaare (k = 0 ... sample_length-1) von Sample [k] * SineRefWave [j] [k] und Sample [j] * CosRefWave [j ist ] [k] für alle j bis zur halben Probenlänge. Wenn man bei all diesen Frequenzen Amplitudenauslesungen benötigt, berechnet eine FFT alle in O (NlgN) -Zeit, wohingegen die individuelle Berechnung O (N ^ 2) -Zeit benötigt. Wenn man andererseits nur Amplitudenauslesungen bei einigen Frequenzen benötigt, ist es oft besser, diese einzeln zu berechnen, insbesondere wenn man einen Prozessor oder DSP verwendet, der diesen Summenstil effizient berechnen kann.

Es ist auch erwähnenswert, dass eine FFT mit z. B. einem 20-ms-Abtastfenster nicht in der Lage ist, zwischen einem einzelnen 1975-Hz-Ton oder einer Kombination von Frequenzen (1975-N) Hz und (1975 + N) Hz für N <25 zu unterscheiden. Es kann verwendet werden, um isolierte Frequenzen mit einer Genauigkeit zu messen, die feiner als das Abtastfenster ist, wenn kein anderer spektraler Inhalt in der Nähe ist. Eine einzige 1975-Hz-Frequenz wird in den 1950-Hz- und 2000-Hz-Bins ebenso aufgenommen wie eine Kombination von 1974-Hz- und 1976-Hz-Tönen. Ein isolierter 1974-Hz-Ton würde jedoch im 1950-Hz-Bin stärker ansteigen als im 2000-Hz-Bin, und ein 1976-Hz-Ton würde im 2000-Hz-Bin stärker ansteigen.

Superkatze
quelle
1

Die Frequenzauflösung hängt nicht von der Länge der FFT ab, sondern von der Länge der gesamten Abtastzeit T, dh 1 / T, die auch die niedrigste Frequenzkomponente ist, die Sie erhalten haben.

Beachten Sie, dass das Auffüllen mit Null die Frequenzauflösung nicht erhöht. Die DFT des Null-Auffüllsignals ist lediglich eine bessere Annäherung an die DTFT des ursprünglichen Signals.

Chaohuang
quelle
0

Wenn Sie den Bereich der möglichen Eingangsfrequenzen kennen und der Bereich eng ist, können Sie eine Unterabtastung anwenden, um die Anzahl der Abtastungen und die Zeit für die Berechnung der FFT zu verringern. Mit 256 Samples und einer Samplefrequenz von 256 Hz erhalten Sie die gewünschte 1-Hz-Auflösung und eine aliasfreie Bandbreite von 128 Hz.

Rainald62
quelle
-3

Schau dir dieses Bild an. es ist klar. Beziehung zwischen fs und fft Auflösung

Bildbeschreibung hier eingeben

Hamid
quelle
5
Auf diesem Bild ist nicht ganz klar, was los ist. (Es hilft nicht, dass das Bild nicht auf Englisch ist.) Was bedeutet dies, dass die anderen Antworten nicht erwähnt haben?
Greg d'Eon