FFT und iFFT mit Excel

Gast #2411832
Lesenswert?

Hallo zusammen,

um die Fourier Thematik besser zu verstehen und für einen praktische 
Anwendung habe ich die Fourier Transformation mit Excel umgesetzt. Dazu 
hab ich ein Zeitsignal in 64 diskrete Werte aufgeteilt (in t=0..63 und 
einen Wertebereich von 0 bis 1).

Darüber die FT in - VBA programmiert - laufen lassen und grafisch 
dargestellt in Phase und Amplitude. Ergebnis passt. Wenn ich ein Sinus, 
Rechteck usw eingebe stimmt das Ergebnis mit dem zu erwartenden Ergebnis 
überein. Weiterhin hab ich die Zeitkurven über die in Excel eingebaute 
FFT() Funktion transformiert, was zum selben Ergebnis führt, wie mein 
VBA Code.

Aber jetzt zu meinem Problem: Wenn ich die Phasen und Frequenzen 
zurücktransformieren möchte, dann bekomm ich für die Standardfunktionen 
(Sinus, 2x Sinus, Rechteck, Sägezahn) ähnliche Zeitfunktionen zurück, 
ABER bei einer zufälligen Funktion zB eine quadratisch ansteigender 
Verlauf sieht ganz komisch aus.

Ist der Rundungsfehler durch die Fließkommazahlen in Excel dafür 
verantwortlich, oder hat mein InverseFourier() Algorithmus einen Fehler?
Um das Signal zurückzutransformieren, summier ich einfach 
cosinus-Funktionen mit der entsprechenden Frequenz und 
Phasenverschiebung auf.

Vielen Dank schonmal für eure Hilfe!
1
Sub InvFourierNumerisch(t As Integer)
2
    
3
    Dim i As Integer
4
    
5
    Dim ret As Double
6
    Dim phase As Double
7
    Dim amplitude As Double
8
    
9
    ret = 0
10
    For i = 0 To 31 ' ACHTUNG: Abtasttheorem nach Shannon beachten!
11
        phase = Cells(i + 9, 26).Value
12
        amplitude = Cells(i + 9, 25).Value
13
        ret = ret + (amplitude * (Cos((2 * Pi * t / 64) * i + phase)))
14
    Next i
15
    
16
    Cells(t + 9, 28).Value = ret
17

18
End Sub
19

20
Sub Regenerate_Click()
21
    Dim i As Integer
22
    
23
    For i = 0 To 63
24
        InvFourierNumerisch (i)
25
    Next i
26
    
27
End Sub
Angehängte Dateien:
Gast #2412920
Lesenswert?

Hallo,

nur auf die Schnelle, ohne das ich den Sachverhalt ausführlich 
durchdacht hätte: Was macht Dich so sicher, dass die Rücktransformation 
fehlerhaft ist?

Könnte es nicht sein, dass bereits die FFT "fehlerhafte" Werte ausgibt, 
da das Abtasttheorem nicht eingehalten wird, inbesondere bei zufälligen, 
ungefilterten Signalen?

Gruß
Christian
Gast #2413360
Lesenswert?

Hab das Problem gefunden: Der Zahlenbereich von Excel reicht vollkommen 
aus; auch die InverseFourier Funktion oben funktioniert. Ich hab einen 
Fehler bei der Berechnung der Phase gemacht und zwar bei der 
Fallunterscheidung, in welchem Quadranten der komplexen ebene sich der 
Zeiger befindet.

Ach... immer wieder die Mathematik...

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