FFT mit FFTW, Output

OP #2573669
Lesenswert?

Hallo Forum,

Durch meine online-Recherche bin ich auf dieses Forum gestoßen
und denke, dass sich hier einige mit der FFT auskennen.

Ich bin gerade dabei eine Frequenzanalyse zu versuchen
und scheitere an dem Problem,
dass ich den Output, den mir die fftw liefert, nicht interpretieren 
kann.

Das allgemeine verständnis von DFTs lese ich mir gerade mit dem Rüdiger 
Hoffmann Buch an, bin da aber noch nicht ganz durch.
Parallel dazu bilde ich mich mit C++ weiter, um das Ganze nachher 
richtig umsetzen zu können.
Die Analyse mit FFTW und C++ sind erstmal Rahmenbedingungen, die 
vorgegeben sind.


Ich gehe grade davon aus, dass mein output ein Array ist, mit jeweils 2 
Werten: Realteil und Imaginärteil.
Wenn ich davon den Betrag bilde, sollte ich doch die Amplitude erhalten.
Aber woher weiß ich die zugehörige Frequenz?

Kann ich davon ausgehen, dass meine höchste Frequenz, die halbe Anzahl 
meiner Eingangswerte ist?

Weiß jemand wie fftw, die Ausgabewerte sortiert?
Finde in der Dokumentation dazu leider nichts...

Ich hoffe, dass meine Fragen nicht all zu oft schon hier diskutiert 
wurden,
da ich trotz Suchfunktion sicher nicht alles threads dazu gefunden habe.

Vielen Dank für alle Tipps.

Beste Grüße
Michael
Gast #2573709
Lesenswert?

Michael W. schrieb:
> Wenn ich davon den Betrag bilde, sollte ich doch die Amplitude erhalten.
ja
> Aber woher weiß ich die zugehörige Frequenz?
durch die nummer des datums

wenn sie in natürlicher reihenfolge kommen ist es bei der FFT immer ein 
Wert der 1/n-tel der Abtaste entspricht + 1/2n.

FFT auf 64 kHz real gesampelte Daten mit 64 Werten:

Nummer  0 = 1/2* 64kHz / 64  +  0* 64kHz =  0,5kHz
Nummer  1 = 1/2* 64kHz / 64  +  1* 64kHz =  1,5kHz
Nummer  2 = 1/2* 64kHz / 64  +  2* 64kHz =  2,5kHz
...
Nummer 30 = 1/2* 64kHz / 64  + 30* 64kHz = 30,5kHz
Nummer 31 = 1/2* 64kHz / 64  + 31* 64kHz = 31,5kHz
---------------------------------------------------
Nummer 32 = 1/2* 64kHz / 64  + 32* 64kHz = 33,5kHz  entspricht 31,5
Nummer 33 = 1/2* 64kHz / 64  + 33* 64kHz = 33,5kHz  entspricht 30,5
...
Nummer 63 = 1/2* 64kHz / 64  + 63* 64kHz = 33,5kHz  entspricht  0,5
Gast #2575630
Lesenswert?

Das ist wird immer wieder erzählt, ist aber nicht wirklich richtig, denn 
es beschreibt de facto den Frequenzbereich zwischen 0 und fs/k.

Hier in unserem Bespiel also alles von 0 bis 1kHz mit der theoretischen 
Mitte von 0,5kHz und wenn man das mal durchsweept, wird man sehen, dass 
die 500Hz besonders gut abgebildet werden, während sich nach 0 und zu 
1kHz eine abfallende Glocken bildet.

"Gleichspannungsanteil" wäre ja eine Frequenz mit f=0!

Die ganze Angelegenheit wird dann um so genauer, je mehr Frequenzen 
genutzt werden. Dann sind z.B. 0,1 Hz von 0,2 Hz besser unterscheidbar.
OP #2841751
Lesenswert?

Michael W. schrieb:
> Das allgemeine verständnis von DFTs lese ich mir gerade mit dem Rüdiger
> Hoffmann Buch an, bin da aber noch nicht ganz durch.
> Parallel dazu bilde ich mich mit C++ weiter, um das Ganze nachher
> richtig umsetzen zu können.

lange ists her, aber die ersten Hausaufgaben sind gemacht:

Vielen Dank hier für das Forum - eure Beiträge sind ungemein hilfreich!

fftw läuft und die Daten bekomm ich mit gnuplot auch ordentlich 
dargestellt.
Jetzt hätte ich aber eine Frage zu den Oberschwingungen, auf die ich 
keine Lösung habe:

Gibt es eine Möglichkeit Oberschwingungen zu verifizieren?

Hintergrund der Frage ist Folgendes Ergebnis meiner FFT (siehe Anhang):

Auf der X-Achse bekomme ich bei ~34, ~42.5, und 51 jeweils einen 
Ausschlag
und gehe jetzt davon aus, daß bei 42.5 der eigentlich peak ist und die 
beiden anderen Seitenmaxima.
Mein Problem ist, dass ich das Ausgangssignal nicht kenne und das jetzt 
aber irgendwie überprüfen muss.
Unterschiedliche Fensterungen ergaben dieselben Ergebnisse.
Eine vorangehende Filterung ist leider momentan nicht möglich.

Bin mal wieder sehr dankbar für Tipps, Anregungen, etc.

Gruß
Michael
Angehängte Dateien:
#2841796
Lesenswert?

> und gehe jetzt davon aus, daß bei 42.5 der eigentlich peak ist

Wie soll das gehen, wenn die Grundfrequenz ca. 17 ist? 17*2=34, 17*3=51 
passt gut. Die 42 sind 17*2.5, was für eine normale Oberwelle eher 
seltsam ist. Allerdings ist bei 17*1.5=25.5 auch ein Peak zu sehen, 
evtl. gehört das einfach so zum Signal...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren