我的逆傅立叶变换中的尖峰

时间:2009-12-19 13:47:27

标签: matlab signal-processing fft

我想在MATLAB中比较两个数据集。为此,我需要通过傅里叶变换数据来过滤数据集,对其进行过滤,然后对其进行逆傅里叶变换。

当我对数据进行傅里叶逆变换时,我在红色数据集的任一端得到一个尖峰(图片显示第一个尖峰),它应该在开始时接近于零,就像蓝线一样。我正在比较许多数据集,这只是偶尔发生的。

我对这个现象有三个问题。首先,可能导致它的原因,其次,我该如何解决它,第三,它是否会影响时间序列中的数据,或者只是在图片中显示的时间序列的开头和结尾。

任何帮助都会非常感谢。

alt text

3 个答案:

答案 0 :(得分:8)

使用DFT时,您必须记住DFT采用周期信号(作为谐波函数的叠加)。 如您所见,起点是谐波函数方式中最后一点的精确延续。

您是否在Spectrum域中执行任何零填充? 无论如何,Windowing可能会减少Overshooting

了解有关过滤器和原始数据的更多信息可能会有所帮助。

答案 1 :(得分:1)

如果你说零频率附近的尖峰,我回答检查直流分量。

您似乎对形状感兴趣,所以

x = x - mean(x)

x -= mean(x)

x -= x.mean()

(我喜欢numpy!)

只会将数据集限制为以零频率的零幅度开始,并继续绘制光谱的幅度。

(作为旁注:你是否检查过你是否适当使用fftshift和ifftshift?这一直是我的麻烦之源)

答案 2 :(得分:0)

可以是Gibbs' phenomenon的数字等价物。如果这是正确的,除了过滤之外,没有办法补救它。