WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fourier-Tranfsormation (FFT) liefert falsches Ergebnis

 

dipling
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2009, 12:29     Titel: Fourier-Tranfsormation (FFT) liefert falsches Ergebnis
  Antworten mit Zitat      
Hi,

ich arbeite zur Zeit an einem Programm, welches mich dazu befähigen soll, mithilfe eines Sinus-Sweeps den Frequenzgang eines Gerätes zu messen.

Der erste ( auch funktionierende) Ansatz lautet:

x(t) = sweep

y = x(t) gefaltet mit h(t)

wenn ich jetzt y(t) mit x(-t) falte, kommt h(t) raus.
Klappt wunderbar - hat nur einen Haken: bis dieses Programm abgearbeitet ist, dauert es unter umständen ( je nach rechner und länge der Vektoren) einige Minuten.


Nun ist ja gemeinhin bekannt, dass eine Faltung im Zeitbereich eine Multiplikation im Frequenzbereich darstellt.

also, nicht dumm, gehn wir hin und transformieren:

x(t) -> X(f)
x(-t) ->X(f) ( das Spektrum bleibt ja gleich )
y(t) -> Y(f)

dann multipliziert:

X(f) * Y(f) = H(f);

dann zurücktransformieren :
H(f) -> h(t)
soweit, sogut.

leider ist dieses h(t) ein KOMPLETT anderes, als das oben.

in meiner Konkreten Ausführung habe ich das Eingangssignal mit sich selbst gefaltet, das ergibt mir ( bei Faltung ) einen Dirac ( wie ich erwartet habe ) .
Bei dem "Umweg" über den Frequenzbereich kommt nur noch schrott.

hat einer ein kurzes Beispiel ( bitte mit code ! )
Wäre sehr dankbar!
viele Grüße
dipling

edit:
das script mit der faltung: http://pastebin.com/m397ebe19
das script mit der Transformation: http://pastebin.com/m63ddae25
Private Nachricht senden Benutzer-Profile anzeigen


dipling
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2009, 14:38     Titel:
  Antworten mit Zitat      
Code:
fs = 44100
t = 1/fs:1/fs:1

x = sweep(t,fs);

% FALTUNG
A = conv(x,x);

% transformation ohne zeropadding
X = fft(x);
b = ifft(X./X);



%transformation mit zeropadding
Z = fft(x,2^21);
c = ifft(Z./Z);


subplot(3,1,1);
plot(a);

subplot(3,1,2);
plot(b);

subplot(3,1,3);
plot(c);



Edit by Martin: Bitte in Zukunft die Code-Formatierung verwenden. Danke Smile

untitled.png
 Beschreibung:
Übersicht; oben faltung, in der mitte Transformation ohne und unten mit zeropadding

Download
 Dateiname:  untitled.png
 Dateigröße:  7.27 KB
 Heruntergeladen:  973 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2010, 16:35     Titel:
  Antworten mit Zitat      
wird sich wohl nur um einen Schreibfehler handeln oder warum hast du Start und Ende gleich?

Code:
t = 1/fs:1/fs:1
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2010, 12:41     Titel:
  Antworten mit Zitat      
kein schreibfehler:

t geht von 1/fs in schritten der breite 1/fs bis 1 ...
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 30.05.2010, 13:44     Titel:
  Antworten mit Zitat      
Hast du's lösen können?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.