Ich brauche Hilfe beim Verständnis der Ausgabe der DFT / FFT-Berechnung.
Ich bin ein erfahrener Softwareentwickler und muss einige Messwerte des Smartphone-Beschleunigungsmessers interpretieren, z. B. das Ermitteln der Hauptfrequenzen. Leider habe ich vor fünfzehn Jahren die meisten meiner College-EE-Klassen durchgeschlafen, aber ich habe in den letzten Tagen über DFT und FFT gelesen (anscheinend ohne Erfolg).
Bitte keine Antworten von "Nehmen Sie an einem EE-Kurs teil". Ich habe tatsächlich vor, das zu tun, wenn mein Arbeitgeber mich bezahlt. :) :)
Also hier ist mein Problem:
Ich habe ein Signal mit 32 Hz aufgenommen. Hier ist eine 1-Sekunden-Stichprobe von 32 Punkten, die ich in Excel aufgezeichnet habe.
Ich habe dann einen FFT-Code in Java von der Columbia University geschrieben (nachdem ich den Vorschlägen in einem Beitrag zu " Zuverlässige und schnelle FFT in Java " gefolgt bin ).
Die Ausgabe dieses Programms ist wie folgt. Ich glaube, es wird eine direkte FFT ausgeführt, daher wird der gleiche Puffer sowohl für die Eingabe als auch für die Ausgabe wiederverwendet.
Before:
Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751 0.858 0.915 1.006 0.985 0.97 1.075 1.183 1.408 1.575 1.556 1.282 1.06 1.061 1.283 1.701 1.101 0.702 ]
Im: [0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ]
After:
Re: [37.054 1.774 -1.075 1.451 -0.653 -0.253 -1.686 -3.602 0.226 0.374 -0.194 -0.312 -1.432 0.429 0.709 -0.085 0.0090 -0.085 0.709 0.429 -1.432 -0.312 -0.194 0.374 0.226 -3.602 -1.686 -0.253 -0.653 1.451 -1.075 1.774 ]
Im: [0.0 1.474 -0.238 -2.026 -0.22 -0.24 -5.009 -1.398 0.416 -1.251 -0.708 -0.713 0.851 1.882 0.379 0.021 0.0 -0.021 -0.379 -1.882 -0.851 0.713 0.708 1.251 -0.416 1.398 5.009 0.24 0.22 2.026 0.238 -1.474 ]
An diesem Punkt kann ich also weder Kopf noch Zahl der Ausgabe machen. Ich verstehe die DFT-Konzepte, wie der reale Teil die Amplituden der Komponenten-Cosinuswellen und der Imaginärteil die Amplituden der Komponenten-Sinuswellen sind. Ich kann diesem Diagramm auch aus dem großartigen Buch " Der Leitfaden für Wissenschaftler und Ingenieure zur digitalen Signalverarbeitung " folgen :
Meine spezifischen Fragen sind also:
Wie finde ich am Ausgang der FFT die "am häufigsten auftretenden Frequenzen"? Dies ist Teil meiner Analyse meiner Beschleunigungsmesserdaten. Soll ich die realen (Cosinus) oder imaginären (Sinus) Arrays lesen?
Ich habe eine 32-Punkte-Eingabe im Zeitbereich. Sollte die Ausgabe der FFT nicht ein 16-Elemente-Array für Real und ein 16-Elemente-Array für Imaginäre sein? Warum gibt mir das Programm reale und imaginäre Array-Ausgaben der Größe 32?
Wie analysiere ich im Zusammenhang mit der vorherigen Frage die Indizes in den Ausgabearrays? Angesichts meiner Eingabe von 32 Abtastwerten, die mit 32 Hz abgetastet wurden, sollte nach meinem Verständnis der Index eines 16-Element-Array-Ausgangs gleichmäßig auf die Hälfte der Abtastrate (von 32 Hz) verteilt sein des Arrays repräsentiert (32 Hz * 1/2) / 16 = 1 Hz?
Warum hat der FFT-Ausgang negative Werte? Ich dachte, die Werte repräsentieren Amplituden einer Sinuskurve. Zum Beispiel sollte der Ausgang von Real [3] = -1,075 eine Amplitude von -1,075 für eine Kosinuswelle der Frequenz 3 bedeuten. Ist das richtig? Wie kann eine Amplitude negativ sein?