Frage:
Was ist der effiziente Weg, um eine FFT für eine große Anzahl von Proben durchzuführen?
SanVEE
2014-02-20 20:03:43 UTC
view on stackexchange narkive permalink

Ich versuche, FFT für eine große Anzahl von Samples durchzuführen.


Sampling Rate: 1 MHz stark>

Nein. Anzahl der erfassten Proben: 1 Million (Dauer 1 Sek.)


Derzeit mache ich keine Auffüllung, damit sie übereinstimmt bis 2 ^ n, und jetzt ist die Gesamtzahl der Proben 1048576 (2 ^ 20) und dann führe ich FFT durch. Dieser Ansatz schien lange zu dauern.

Ich frage mich nur, ob es einen effizienten Weg gibt, dies zu tun. (Bitte beachten Sie, dass mir die Frequenzauflösung derzeit nicht besonders wichtig ist.)

Teilen Sie die Beispieldaten in kleinere Teile auf und verarbeiten Sie sie einzeln. Wenn Sie möchten, können Sie die Ergebnisse zusammen mitteln oder einfach getrennt halten, damit Sie sehen können, wie sich das Spektrum mit der Zeit ändert.
Einer antworten:
John R. Strohm
2014-02-20 20:45:37 UTC
view on stackexchange narkive permalink

Die grundlegende Physik der Cooley-Tukey-Radix-2-Fast-Fourier-Transformation ist bekannt.

Sie führt log2 N "Schichten" von Schmetterlingsoperationen durch. Jede Schicht macht N / 2 Schmetterlinge. Jeder Schmetterling führt 2 Multiplikationen und 2 Additionen durch.

Für eine binäre Million (2 ^ 20) Punkte-Stichprobe sind das 20 Millionen Multiplikationen und 20 Millionen Additionen.

Sie benötigen auch eine Million- Punkt (vielleicht eine halbe Million, ich bin nicht absolut sicher) Twiddle-Faktor-Tabelle, die Sie vorberechnen.

Auf einem DSP, der in Echtzeit ausgeführt werden soll, sind das ungefähr 40 Millionen Operationen / Sekunde heute überhaupt nicht unvernünftig. Ein moderner x86 sollte damit kein Problem haben, vorausgesetzt natürlich, dass Sie kompilierten Maschinencode und Hardware-Arithemik ausführen und dass Ihr FFT-Code für Ihre spezielle Hardware richtig optimiert ist.

Beginnen Sie mit dem Bekannten Schnellste FFT im Westen.

Wenn Sie dies auf einem Arduino versuchen, werden Sie einige Probleme haben. Es hat einfach nicht die Leistung.

Alles, was Hintergrund ist.

Das erste, was Sie fragen müssen, ist Folgendes: BRAUCHEN Sie einen Frequenzbereich bis zu 1 MHz UND Auflösung bis zu 1 Hz?

Wenn Sie keine Auflösung von 1 Hz benötigen, aber nach Hochfrequenzsignalen suchen, behalten Sie Ihre 1-MHz-Abtastrate bei und führen Sie kleinere FFTs durch. Durch die Halbierung Ihrer Stichprobengröße wird die Anzahl Ihrer Schmetterlinge / Schichten halbiert und die Anzahl der Schichten um eins verringert: Anstatt 20 Schichten mit einer halben Million Schmetterlingen zu machen, machen Sie 19 Schichten mit einer Viertelmillion Schmetterlingen.

Wenn Sie Sie suchen nach niederfrequenten Signalen, und Sie benötigen keine extreme Frequenzauflösung, gehen nicht zu einer langsameren Abtastrate oder sampeln Ihre 1-MHz-Abtastwerte herunter. Dies hat den gleichen Effekt.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...