|
ovib |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.08.2011, 10:07
Titel: iDFT
|
|
Hallo zusammen,
ich lese eine Wave audiodatei ein und möchte diese im Frequenzspektrum bearbeiten. Dafür muss ich den Betrag im Frequenzbereich bilden. Die Phase speichere ich vorher ab und füge sie dem Betrag nach der Bearbeitung wieder hinzu. Leider liefert die Rücktransformation nicht das gewünschte Ergebnis.
Hier der Code:
Das ich hier ein Rechteckfenster (statt Hanning) nehme liegt daran, dass die Wavedatei eine Abtastfrequenz von 22kHz hat und das Signal mit einem Mikrofon von maximal 5kHz wohl schmalbandig genug sein müsste (Leakage).
Was muss ich verändern damit Ausgangs- und Eingangssignal gleich sind?
Danke
|
|
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 23.08.2011, 12:43
Titel:
|
|
Hiermit sollte es gehen...
Die ifft musst du auch wieder Segmentweise durchführen. Gibt es einen Grund, warum du dein Signal in Segmente zerlegst? Die Fensterung mit einem Rechteck kann man sich auch sparen...ich vermute aber mal, dass dies für andere Fenstertypen implementiert worden ist. Was ich aber nicht verstehe, warum X am Ende komplex ist, obwohl ich als Testsignal ein reelles Signal genommen habe.
|
|
|
ovib |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.08.2011, 07:31
Titel:
|
|
Hallo DSP,
es hat geklappt. Danke!
Allerdings habe ich
verwandelt in
Damit klappts.
Eine Frage noch wieso muss man das Ausgangssignal mit Lw multiplizieren bzw. wieso muss man das Eingangssignal in der FFT mit Lw normieren?
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 24.08.2011, 08:58
Titel:
|
|
Zu 1) Wenn du dein Zeitsignal in Segmente zerlegst (hier mit einer Länge von 256) dann überschreibst du doch jedesmal die Transformierte und hast am Ende nur noch das letzte Segment im Frequenzbereich. Das Abspeichern jedes Segments hatte schon seinen Sinn...
Warum zerlegst du dein Signal überhaupt in Segmente...habe ich auch schon gefragt
Zu 2) Die Skalierung erfolgt, damit das Amplitudenspektrum richtig dargestellt wird. Wenn du das Spektrum nicht plotten willst, sondern lediglich das Signal veränderst, kannst du es auch weglassen. Bei einem Sinus mit Amplitude 10 muss ja auch im Frequenzbereich ein Peak der Höhe 10 bei der Freq. des Sinus sein. Das gilt allerdings nur, wenn man nur das positive Frequenzspektrum darstellt und kein Leakage-effekt auftritt. Schau dir mal in der Skript-Ecke das 'umfassende FFT Beispiel' an. Dort werden die verschiedenen Skalierungen gezeigt.
http://www.gomatlab.de/fft-umfassendes-beispiel-t777.html
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|