Hallo, kann mir jmd. sagen weshalb Zeile 4 "nur" zu einer Verringerung der Sound-Qualität führt? Ich habe eigentlich erwartet, dass im Bereich 20001 bis 421000 nichts zur hören ist. Ich vermute ich habe irgendwo einen grundlegenden Denkfehler ;) # Einlesen der ersten 441000 Samples 1: [Y,Fs,bits]=wavread("old.wav",441000) # Durchführung der FFT -> Überführung in den Frequenzbereich 2: FFT=fft(Y) # Lediglich eine neue Zuweisung 3: FFT_filtered=FFT # Die Arrayfelder 200001 bis 421000 "nullen" 4: FFT_filtered(20001:421000)=0 # Durchführung der inversen FFT -> Rückführung in den Zeitbereich 5: Y_filtered=real(ifft(FFT_filtered)) # Abspeichern des Ergebnisses in einer neuen wav-Datei 6: wavwrite(Y_filtered, Fs, "new.wav")
Hallo, dein Fehler liegt darin, das du die Abtastfrequenz mit der Signalfrequenz verwechselst. Wenn du alle Datenpunkte im Frequenzbereich oberhalb von 20000 Punkten weg lässt, dann beschränkst du die Signal auf 10 kHz. Das Stichwort ist Abtasttheorem bzw. Nyquistfrequenz http://de.wikipedia.org/wiki/Abtasttheorem http://de.wikipedia.org/wiki/Nyquist-Frequenz Gruß Kai
Hallo Kai, danke für die Antwort. Wenn ich aber die Originaldatei und das modifizierte File beispielsweise mit Audacity einer Frequenzanalyse unterziehe, liegt das Original bei +/- 20kHz und das bearbeitete File bei +/- 2.5kHz. Wenn ich Dich richtig verstanden habe, dann müssten aber mind. Anteile bis 10kHz zu sehen sein? Gruss Florian
Wenn dein Signal mit 44,1 kHz abgetastet ist und du davon 441000 Samples verwendest, dann sind das 10 Sekunden. Das Spektrum hat gleich viele Punkte wie das Originalsignal, also auch 441000 Punkte, die Auflösung im Frequenzbereich ist 0,1 Hz (1 / 10 s). Florian M. schrieb: > FFT_filtered(20001:421000)=0 Der Array-Index 20000 entspricht 2 kHz. Das Spektrum einer diskreten Fouriertransformation ist periodisch mit der Abtastfrequenz, deshalb entspricht der Index 421000 der Frequenz -2 kHz. Du Filterst also alle positiven Frequenzen oberhalb 2 kHz weg und die negativen Frequenzen unterhalb -2 kHz. Vermutlich ist das nicht das, was du haben möchtest. Teste es mal so: FFT_filtered(200001:241000)=0 Damit werden nur die Frequenzen oberhalb 20 kHz (und unterhalb -20 kHz) weggefiltert.
Mir ging es weniger um die Qualität des (neu) erzeugen WAV-File als um das Verständnis, warum sich die Sache so verhält. Hat mir weitergeholfen, vielen Dank!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.