Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT und iFFT mit Excel


von donov4n (Gast)


Angehängte Dateien:

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

von Christian (Gast)


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

von donov4n (Gast)


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...

von JBB (Gast)


Lesenswert?

Könntest Du das senden, einstellen - oder wie könnte man das nutzen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.