在python中,如果我对复杂数据执行fft,那么只对正频率进行irfft,这对数据有何影响?

时间:2016-04-13 18:15:51

标签: python numpy fft ifft

所以我试图对一组实值点进行频移。为了实现频移,必须将数据乘以复指数,使得结果数据复杂化。如果我乘以余弦,我会得到和频和差频的结果。我想要的只是总和或差异。

我所做的是将数据乘以复指数,使用fft.fft()来计算fft,然后仅在正频率上使用fft.irfft()来获得只有一个总和的实值数据集或频率的差异变化。这似乎很有效,但我想知道这样做是否有任何缺点,或者可能是实现相同目标的更合适的方法。提前感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

你在做什么都很好。您正在生成分析信号以适应负频率,就像离散希尔伯特变换一样。您将遇到一些缩放问题 - 您需要将FFT结果的实际频率部分中的所有非直流和非奈奎斯特信号加倍。

一些实际问题是这种方法会导致窗口大小的延迟,所以如果你想要实时做这件事,你应该检查一下使用FIR Hilbert变换器和适当的总和。在这种情况下,延迟将是希尔伯特变压器的群延迟。

另一个值得关注的问题是,您需要记住信号的直流分量也会随着所有其他频率一起移动。因此,我建议您在移位之前贬低数据(保存值),在FFT数据之后将DC箱归零(以移除DC箱中最终的任何频率组件),然后再添加均值以保留最后的信号水平。