我正在尝试比较 MATLAB 中的两个数据集。为此,我需要通过对数据进行傅里叶变换来过滤数据集,对其进行过滤,然后对其进行傅里叶逆变换。
当我对数据进行傅里叶逆变换时,我在红色数据集的任一端都得到了一个尖峰(图片显示了第一个尖峰),它在开始时应该接近于零,就像蓝线一样。我正在比较许多数据集,这只是偶尔发生。
我对这个现象有三个问题。首先,可能是什么原因造成的,其次,我该如何补救,第三,它是否会进一步影响时间序列中的数据,或者只是在时间序列的开头和结尾处,如图所示。
任何帮助都会非常感谢。
我正在尝试比较 MATLAB 中的两个数据集。为此,我需要通过对数据进行傅里叶变换来过滤数据集,对其进行过滤,然后对其进行傅里叶逆变换。
当我对数据进行傅里叶逆变换时,我在红色数据集的任一端都得到了一个尖峰(图片显示了第一个尖峰),它在开始时应该接近于零,就像蓝线一样。我正在比较许多数据集,这只是偶尔发生。
我对这个现象有三个问题。首先,可能是什么原因造成的,其次,我该如何补救,第三,它是否会进一步影响时间序列中的数据,或者只是在时间序列的开头和结尾处,如图所示。
任何帮助都会非常感谢。
使用 DFT 时,您必须记住 DFT 假设一个周期信号(作为谐波函数的叠加)。如您所见,起点是调和函数方式中最后一点的精确延续。
您是否在频谱域中执行了任何零填充?无论如何,窗口化可能会减少Overshooting。
了解有关过滤器和原始数据的更多信息可能会有所帮助。
如果您说接近零频率的尖峰,我会回答检查直流分量。
你似乎对形状感兴趣,所以这样做
x = x - mean(x)
或者
x -= mean(x)
或者
x -= x.mean()
(我喜欢麻木!)
只会将数据集限制为从零频率处的零幅度开始,然后继续对频谱的幅度进行映射。
(作为旁注:您是否检查过您是否正确使用了 fftshift 和 ifftshift?这一直是我的麻烦之源)
可能是吉布斯现象的数值等价物。如果那是正确的,那么除了过滤之外没有办法补救。