Wie bekomme ich die Frequenzen der einzelnen Werte in eine FFT?
Habe ich ein FFT-Resultat. Diese werden in zwei double
arrays: ein echter Teil von array-und Imaginärteil-Arrays. Wie bestimme ich die Frequenzen entsprechen, die für jedes element diese arrays?
In anderen Worten, ich möchte haben, erstellen Sie ein array, in dem die Frequenzen für die einzelnen realen und imaginären Bestandteil meiner FFT.
Ich Tue es in C#.net. Können Sie mir helfen?
Wenn Sie nicht verstehen, die Bedeutung von real-und Imaginärteil der FFT-dann sind Sie nicht gehen, um überhaupt sinnvolle Ergebnisse erzielen, so sollten Sie hunt aus einigen FFT-Signalverarbeitung und tutorials, um zu verstehen, wie die Ergebnisse zu interpretieren. Ich denke, es ist ziemlich wahrscheinlich, dass was auch immer Sie verwenden es für, Sie wollen die Größe der FFT oder die Spektrale Leistungsdichte.
Danke!!! Ich möchte peak-Frequenzen der einzelnen Frames (frame-Länge hängen im Fenster-Länge und-Shift-Länge)
Wenn Sie nicht verstehen, die Bedeutung von real-und Imaginärteil der FFT-dann sind Sie nicht gehen, um überhaupt sinnvolle Ergebnisse erzielen, so sollten Sie hunt aus einigen FFT-Signalverarbeitung und tutorials, um zu verstehen, wie die Ergebnisse zu interpretieren. Ich denke, es ist ziemlich wahrscheinlich, dass was auch immer Sie verwenden es für, Sie wollen die Größe der FFT oder die Spektrale Leistungsdichte.
Danke!!! Ich möchte peak-Frequenzen der einzelnen Frames (frame-Länge hängen im Fenster-Länge und-Shift-Länge)
InformationsquelleAutor Rango | 2010-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den ersten bin, die in die FFT ist DC (0 Hz), die zweite bin, ist
Fs /N
, woFs
ist die sample-rate undN
ist die Größe der FFT. Die nächste bin, ist2 * Fs /N
. Ausdrücklich diese Bedingungen im Allgemeinen, die N-TEN binn * Fs /N
.Also, wenn Ihr sample-rate
Fs
ist sagen, 44,1 kHz und Ihre FFT-Größe,N
ist 1024, dann ist die FFT-Ausgangs-bins sind:Beachten Sie, dass für ein real input signal (imaginären Teile alle null), die zweite Hälfte der FFT (bins von
N /2 + 1
zuN - 1
) enthält keine nützlichen Zusatz-Informationen (Sie haben komplexe konjugierte Symmetrie mit der erstenN /2 - 1
bins). Die Letzte nützlich bin (für praktische Anwendungen) ist beiN /2 - 1
entspricht 22006.9 Hz im obigen Beispiel). Bin beiN /2
stellt Energie bei der Nyquist-Frequenz, d.h.Fs /2
( = 22050 Hz in diesem Beispiel), aber dies ist im Allgemeinen nicht von praktischem nutzen, da anti-aliasing-Filter werden in der Regel dämpfen Sie alle Signale an und vorFs /2
.Danke für den edit & Klarstellung... ich denke, das ist, wo ich offenbaren einen Mangel an Praktikabilität. Mich: Aber Meister, FFT-Arbeit bis zur nyquist! Sie: Padawan sollte man einen filter aus.
Ich wünschte, ich könnte die Sterne Antworten. Diese Antwort ist sogar noch besser als die ursprüngliche Frage!
Ich wollte Ihnen danken für diese wunderbare Antwort, die gedient hat, die mich die Jahre über. Ich würde den Besuch dieser Antwort, bevor ich hatte einen StackOverflow account, und ich tatsächlich vergessen, über Sie danken, sobald ich mich angemeldet habe. Ich war vor kurzem ein Blick auf die FFT-Sachen, und ich erinnerte mich an Ihre Antwort und besucht Sie jetzt. Sobald ich hier ankam, erinnerte ich mich bedanken... vielen Dank!!! Wenn ich eine Debatte mit jemandem, der auf der Interpretation, welche jeden Punkt auf der horizontalen Achse der FFT ist, ich Stelle Ihnen auf diesen link.
vielen Dank so viel - ich denke, das ist die schönste Bestätigung, die ich je hatte in ~5 Jahren mit der Beantwortung von Fragen hier auf ALSO!
InformationsquelleAutor Paul R
Werfen Sie einen Blick auf meine Antwort hier.
Antwort zu Kommentar:
Den FFT-tatsächlich berechnet die Kreuz-Korrelation des Signals mit Sinus-und Cosinus-Funktionen (basis-Funktionen) in einer Reihe von gleichmäßig beabstandeten Frequenzen. Für einen bestimmten FFT-Ausgabe, gibt es eine entsprechende Frequenz (F) gegeben durch die Antwort, die ich gepostet. Der Reale Teil der Ausgabe-Beispiel ist die Kreuz-Korrelation des Eingangssignals mit
cos(2*pi*F*t)
und den imaginären Teil der Kreuzkorrelation des Eingangssignals mitsin(2*pi*F*t)
. Der Grund ist, wird das Eingangssignal korreliert mitsin
undcos
Funktionen, um die Phasenverschiebung zwischen Eingangs-signal und basis-Funktionen.Indem der Betrag des komplexen FFT-Ausgabe, erhalten Sie ein Maß dafür, wie gut die input-signal korreliert mit der sinusoide auf eine Reihe von Frequenzen, die unabhängig von der Eingangs-signal-phase. Wenn Sie nur analysieren Frequenzanteile eines Signals, Sie wird fast immer die Größe oder magnitude squared des Komplexes Ausgang der FFT.
siehe meine aktualisierte Antwort.
Danke für deine Erklärung.
diese Antwort verdient mehr Liebe.
Könnte es sein, dass der Betrag des komplexen Ausgänge zu verdoppeln ist jeder? (wenn ich einschränken, meine interpretation zu der unteren Hälfte)
InformationsquelleAutor Jason B
Benutzt habe ich die folgenden:
Eingänge:
i
: Bin auf Zugangsamples
: Abtastrate in Hertz (d.h. 8000 Hz, 44100Hz, etc.)nFFT
: Größe der FFT-Vektorsamples
odernFFT
. Also bitte mehr Begründung.Die akzeptierten Antworten, sagt dies sollte
i * samples / nFFT
. Warum ist der extra2
es? Bin ich etwas fehlt?InformationsquelleAutor roberto
Der FFT-output-Koeffizienten (für komplexe Eingaben der Größe N) sind von 0 bis N - 1 zusammengefasst in [LOW,MID,HI,HI,MID,LOW] Frequenz.
Ich würde berücksichtigen, dass das element an der k hat die gleiche Frequenz, die das element an der N-k, da Sie für realen Daten, FFT[N-k] = komplexe konjugierte der FFT[k].
Den Auftrag für das Scannen von NIEDRIGEN zu HOHEN Frequenz ist
Gibt es [N/2]+1 Gruppen der Frequenz vom index i = 0 zu [N/2], jeweils mit der
frequency = i * SamplingFrequency /N
Also die Frequenz, bei bin FFT[k] ist:
InformationsquelleAutor robert.b
Ihre kth FFT-Ergebnis der Frequenz 2*pi*k/N.
InformationsquelleAutor Neo