【问题标题】:how to use ifft function in MATLAB with experimental data如何在 MATLAB 中使用带有实验数据的 ifft 函数
【发布时间】:2014-10-23 19:37:41
【问题描述】:

我正在尝试对一些实验数据使用 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) 

我做错了什么? 提前谢谢你

【问题讨论】:

  • 有趣的问题...我想我会在 ifft 的结果上使用 realabs 以获得真正的结果。如果您还没有尝试过
  • 已经尝试过但没有工作..而且我不确定丢弃虚部是个好主意,因为它不可忽略(就数量级而言),但实际上我不是该领域的专家
  • 您是否正在对移位的频谱进行检查?如果是这样,请使用ifft(ifftshift( ... ))
  • 我也尝试过,但它不起作用。
  • 我尝试的第一件事是移动 new_amp 信号以使其相对于 0 对称(因此,对于 >0 和

标签: matlab fft trigonometry ifft time-frequency


【解决方案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- 您的频域信号必须均匀才能在时域具有真实信号。

我希望这会有所帮助,即使有人可以改进它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-19
    • 2017-09-26
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多