Nach der FFT und IFFT kann ich nur Rauschen in meinen Kopfhörern hören ... Hier ist der Code:
%Vor% Vielleicht habe ich den falschen FFT-Typ gewählt?
P.S. Daten sind das Anfangssignal
Ok, jetzt ist der Code
%Vor%Das Problem bleibt gleich, mein Daten-Array ist beschädigt.
Also, das Problem liegt in meiner Transformationsgröße und Normalisierung. Wenn ich Real-to-Real-FFTW_REDFT10 und FFTW_REDFT01 benutze, welche transformieren Größen, die ich verwenden muss? 2 * n? Oder etwas anderes? Und dann muss ich mein Ausgangssignal normalisieren, indem ich jedes Element durch 2 * n? Dividiere Danke an alle für die Antwort.
Danke an alle für die nochmalige Antwort. Ich habe das Problem mit Ihrer Hilfe gelöst. Hier ist der Arbeitscode:
%Vor%Ich sehe nicht, wo Sie Ihre Ausgabe normalisieren. Sie müssen Ihre Ausgabewerte durch die Anzahl der Elemente im Datenarray teilen, um die Daten wieder in den ursprünglichen Wertebereich zu bringen.
Siehe das FFTW-Handbuch 4.8.2, letzter Absatz (ich habe V3.2-Handbuch).
Sie führen eine Real-zu-Real-FFT durch (tatsächlich berechnet FFTW intern eine DCT- oder diskrete Kosinustransformation, aber es ergibt dasselbe). Achten Sie auf die Anzahl der Punkte, die im Ausgangsspektrum berechnet werden. Eine Real-zu-Real-Transformation hat nur n / 2 + 1 tatsächliche Werte in das Array platziert.
Wenn Sie, wie Sie angegeben haben, eine Real-zu-Komplex-Transformation berechnen, erzeugen Sie beide Seiten des Spektrums (sie sind komplexe Konjugationen), aber Ihr Ausgabearray muss in der Größe angepasst werden, um komplexe Werte plus aufzunehmen das DC-Ergebnis.