如何在MATLAB中使用ifft函数和实验数据

时间:2014-10-23 19:37:42

标签: matlab fft sine ifft time-frequency

我试图在MATLAB中使用ifft函数来获取一些实验数据,但是我没有得到预期的结果。

我有对数正弦扫描激励的频率数据,因此我知道振幅[g' s],频率[Hz]和相位(由于该点是引导点,因此为0)。

我试图直接将它提供给ifft函数,但是我得到了一个复数(因为它是一个时间信号,我期待一个真实的结果)。我认为问题可能是信号不对称,因此我以这种方式计算对称部分(在' for'循环中)

x(i) = conj(x(mod(N-i+1,N)+1))

我将它添加到幅度向量的末尾。

new_amp = [amplitude x];

通过这种方式,新的幅度矢量是对称的,但现在我也将该矢量的维数加倍,这意味着我还必须将频率矢量的维数加倍。

无论如何,我将新的幅度矢量输入到ifft但仍然没有得到对数正弦扫描,尽管这次输出是预期的真实。

为了计算绘图的时间[s],我使用了以下公式:

t = 60*3.33*log10(f/f(1))/(sweep rate) 

我做错了什么? 提前谢谢

1 个答案:

答案 0 :(得分:1)

如果您想从指定的频率值创建相同的时域信号,您应该考虑很多细节。在我看来这个问题非常复杂,我认为它背后的数学需要非常强大的背景。

但我认为您可能会在某些细节上工作以获得更可接受的结果:

1-时间矢量应基于频率步长和最大值的采样等间距。

t = 0:1/fs:N/fs;
where: *N* is the length of signal in frequency domain, and *fs* is twice the 
highest frequency in frequency domain.

2-我认为你应该在频率箱上有某种对数阶段。

3-频域中的信号必须均匀,才能在时域中产生实际信号。

我希望这可以提供帮助,即使是有人改进它。