我想在MATLAB中比较两个数据集。为此,我需要通过傅里叶变换数据来过滤数据集,对其进行过滤,然后对其进行逆傅里叶变换。
当我对数据进行傅里叶逆变换时,我在红色数据集的任一端得到一个尖峰(图片显示第一个尖峰),它应该在开始时接近于零,就像蓝线一样。我正在比较许多数据集,这只是偶尔发生的。
我对这个现象有三个问题。首先,可能导致它的原因,其次,我该如何解决它,第三,它是否会影响时间序列中的数据,或者只是在图片中显示的时间序列的开头和结尾。
任何帮助都会非常感谢。
答案 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的数字等价物。如果这是正确的,除了过滤之外,没有办法补救它。