2016-04-19 7 views
0

Ich habe ein gemessenes zeitveränderliches Signal, von dem bekannt ist, dass es einen variablen Frequenzgang hat (ich habe Frequenz- und Empfindlichkeitsdaten für das Messgerät). Ich möchte mit entfalten:MATLAB: Verwenden von ifft() um Signal und Frequenzgang zu dekonvolieren

pt = ifft(fft(vt)./Mf) 

wo vt die Zeit veränderliches Signal ist und Mf ist der Frequenzgang.

nehme ich die Größenordnung

abs(fft(vt)) 

und dividieren durch die freq. vs. Reaktionskurve Mf (interpoliert auf den gleichen Frequenzbereich).

Wenn ich jedoch Mf = 1 (für alle Werte f = 0 bis n MHz) setze ich nicht das ursprüngliche Signal vt, wenn ich das iftt mache.

Mein Verständnis ist ich brauche die Division (fft (vt) ./ Mf) mit der vt fft Größe (da Mf ist effektiv freq. Vs. Magnitude Daten), aber dann real/komplexe fft Daten für ifft zu bekomme das ursprüngliche Signal, aber ich bin mir nicht sicher, wie das funktioniert.

Antwort

0

Es scheint mir, was Sie behaupten, dass

pt = ifft(fft(vt)./1) 

führt nicht zu pt gleich vt zu sein. Dies gilt bis zu einer Gleitkomma-Genauigkeit. Ich würde das Maximum des absoluten Fehlers zwischen den Stichproben von pt und vt betrachten. Dies sollte mindestens zehn Größenordnungen weniger als die Ihrer Proben in VT sein.

+0

Nein, das funktioniert ok. Was ich nicht verstehe, ist, ob es richtig ist zu verwenden: abs (fft (vt)) ./ Mf oder fft (vt) ./ Mf und wie man ift danach korrekt anwendet, um die korrekte Zeitstempelung und Amplitude zu erhalten. (Ich muss Mf interpolieren, damit die Abfragefrequenzpunkte gleich sind wie bei fft (vt)). – 2one