FFT und iFFT mit Excel

Gast #2411832
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
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
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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.