Ich lernte die Fourier-Transformation im Mathematikunterricht und dachte, ich hätte sie verstanden. Jetzt versuche ich mit R (statistische Sprache) herumzuspielen und die Ergebnisse einer diskreten FFT in der Praxis zu interpretieren. Dies ist, was ich getan habe:Warum bekomme ich zwei Frequenzspitzen von einer einfachen sin-Funktion über FFT in R?
x = seq(0,1,by=0.1)
y = sin(2*pi*(x))
calcenergy <- function(x) Im(x) * Im(x) + Re(x) * Re(x)
fy <- fft(y)
plot(x, calcenergy(fy))
und dieses Grundstück erhalten:
Wenn ich das richtig verstehen, dies steht für die ‚Hälfte‘ des Energiedichtespektrums. Da die Transformation symmetrisch ist, könnte ich einfach alle Werte auf die negativen Werte von x spiegeln, um das volle Spektrum zu erhalten.
Was ich jedoch nicht verstehe ist, warum ich zwei Spikes bekomme? Hier gibt es nur eine einzige Sinusfrequenz. Ist das ein Aliasing-Effekt?
Auch habe ich keine Ahnung, wie die Frequenzen aus dieser Handlung zu bekommen. Nehmen wir an, die Einheiten der Sinusfunktion waren Sekunden, ist der Peak bei 1,0 im Dichtespektrum 1Hz dann?
Nochmal: Ich verstehe die Theorie hinter FFT; die praktische Anwendung ist das Problem :).
Danke für jede Hilfe!
Tangential kann 'calenergy' als' function (x) abs (x)^2' geschrieben werden. (Dies wird effizienter sein). – huon
@ dbaupp oh danke. Ich wusste, dass es einen eingebauten Weg gab, aber ich war faul, danach zu suchen :) –