2016-06-22 13 views
0

Ich versuche, einen Code in Matlab zu schreiben, die mit Lärm auferlegt eine ein- oder Summe von sinosudal Wellen nehmen und versuchen, es zu filtern, um die folgenden algo mit:Filtern eine Sinuswelle mit FFT

  • ersten i nehmen der Eingang und gibt sie in einem Vektor

  • dann gilt i fft() zu diesem Vektor und abs() zu diesem fft
    - Beispiel, wenn ‚x‘ ist der Vektor, in dem Wellen dann gespeichert wird
    - y = abs (fft (x))

  • jetzt in 'y' i machen alle Elemente kleiner als ein bestimmter Schwellenwert 0

  • dann die ifft apply() Funktion erhalten die gefilterte Signal kann sagen, ‚x1‘

aber die letzte Welle i sogar erhalten, obwohl eine Sinuswelle es aus Phase (die Grafik sehen) .ist es, weil iam Anwendung abs() an den fft ??
Aber die material, von der ich diesen Algo bekam, diskutiert nicht darüber.
Muss ich einen anderen Filter anwenden, damit ich die eigentliche Welle bekomme ??

hier ist die Handlung der beiden Wellen: ein i von oben beschriebenen Verfahren und die andere der eigentliche Welle, die ohne Lärm eine Sinuswelle bekam: my graph

sehen, wie meine gefilterte Welle und die eigentliche Welle ist außer Phase, wie man es korrigiert?

Wenn du die Frage nicht verstehen kannst oder etwas hast, was du mich fragen möchtest bitte Kommentar Ich werde versuchen es zu erklären.

Antwort

3

Sie ordnen die Absolutwerte des FFT-Ergebnisses y zu, daher erhalten Sie REAL-Werte. Wenn man ift() anwendet, nimmt man einfach Imaginärteile an, also Null, also die Phasenverschiebung.

+3

Das Ergebnis der FFT ist eine komplexe Zahl, Sie benötigen sowohl die Phase als auch das Modul, um es zu invertieren, wenn Sie den absoluten Wert verwenden, an dem Sie Informationen verlieren. Sie können den absoluten Wert verwenden, um ihn grafisch darzustellen, aber achten Sie darauf, nicht den absoluten Wert für die IFFT zu verwenden. – Niles

+0

Um die Filterbedingung zu setzen muss ich absolute Werte verwenden. Gibt es eine andere Möglichkeit, fft zum Filtern zu verwenden, ohne absolute Werte verwenden zu müssen? Wenn ja, bitte gib mir die Quelle. –

+0

oder kann ich die Phasenverschiebung einigen wie (ohne die ursprüngliche Welle zu kennen) –