简体   繁体   English

MATLAB:使用ifft()对信号和频率响应进行去卷积

[英]MATLAB: Using ifft() to deconvolve signal and frequency response

I have a measured time varying signal which is known to have a variable frequency response (I have freq vs. sensitivity data for the measurement device). 我有一个测得的时变信号,已知它具有可变的频率响应(我有测量设备的频率与灵敏度数据)。 I want to deconvolve using: 我想反卷积使用:

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

where vt is the time varying signal and Mf is the frequency response. 其中vt是时变信号,Mf是频率响应。

I take the magnitude 我以幅度

abs(fft(vt))

and divide by the freq. 并除以频率。 vs. response curve Mf (interpolate to the same frequency range). 与响应曲线Mf的关系(内插到相同的频率范围)。

However if I set Mf=1 (for all values f=0 to n MHz) I don't get the original signal vt when I do the ifft. 但是,如果我将Mf = 1设置(对于所有值f = 0到n MHz),则在执行ifft时不会得到原始信号vt。

My understanding is I need to perform the division (fft(vt)./Mf) using the vt fft magnitude (since Mf is effectively freq. vs. magnitude data) but then use real/complex fft data for ifft to get the original signal but I'm unsure how to get this to work correctly. 我的理解是我需要使用vt fft幅度执行除法(fft(vt)./ Mf)(因为Mf实际上是频率对幅度数据),然后将实数/复数fft数据用于ifft以获得原始信号但我不确定如何使其正常工作。

It seems to me what you're claiming is that 在我看来,您所声称的是

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

does not result in pt being equal to vt. 不会导致pt等于vt。 This is true up to some floating point precision. 达到某种浮点精度,这是正确的。 I would look at the maximum of the absolute error between samples of pt and vt. 我将看一下pt和vt样本之间的绝对误差的最大值。 This should at least ten orders of magnitude less than those of your samples in vt. 这至少应比vt中的样本小十个数量级。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM