Fouriertr. Matlab Imaginärteil < Signaltheorie < Ingenieurwiss. < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:26 Sa 23.04.2011 | Autor: | qsxqsx |
Hallo,
Ich habe ein praktisches Problem bei der Filterung eines Signals mit Matlab, dass mir Kopfzerbrechen bereitet:
Gegeben ist ein Audiosignal im Zeitbereich (welches nicht periodisch ist). Ein Musikstück zum Beispiel. Nun wollte ich mal ein Teil der enthaltenen Frequenzen auf Null setzen. Ich habe also folgendes gemacht, wenn man annimmt, das Audiosignal sei als Vektor mit dem Namen "data" gegeben:
fftdata = fft(data);
for k = lowfrequency:highfrequency
fftdata(k) = 0;
end
newdata = ifft(fftdata);
So, nun hat aber newdata auch immaginäre Anteile. Was soll ich damit tun?
Ich meine, wäre das Signal periodisch, so wäre die Sache ja kein Problem: Man kann ein Periodisches Signal aus cos(n*f*t) und sin(n*f*t) darstellen. Aber ein nicht-periodisches wird ja im allgemeinen transformiert zu [mm] |f(w)|*e^{i*arg f(w)}. [/mm]
Danke.
Gruss
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:12 So 24.04.2011 | Autor: | Infinit |
Hallo qsxqsx,
die FFT liefert dir Frequenzanteile bei negativen wie auch bei positiven Frequenzen und das bedeutet, dass in der Mitte Deines Datenfeldes die Frequenz 0, also der Gleichanteil, liegt. Wenn Du nun ein reelles Signal wieder bekommen willst, musst Du beim Filtern zwei Anteile in Deinem Ergebnisfeld zu Null setzen, den zwischen lowfrequency und highfrequency, aber auch den zwischen - lowfrequency und -highfrequency. Dann bekommst Du beim Rücktransformieren auch wieder ein reelles Audiosignal.
Viele Grüße,
Infinit
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:40 So 24.04.2011 | Autor: | qsxqsx |
Perfekt...jetzt klappts!
Schönen Tag!
|
|
|
|