FFT 在 0Hz 处显示峰值?

信息处理 fft Python IFFT
2022-02-19 02:46:34

所以我一直在尝试对一些数据进行 FFT,我看到一个 0Hz 的峰值,我无法真正理解为什么,因为我对信号处理还很陌生。我使用 pandas 读取了我的文件,将它们保存到数组中,并在 y 数据上使用了 scipy 的 FFT 函数。但是当根据频率 linspace 绘制它时,结果对我来说似乎很奇怪。我不太确定如何将时域转换为频域。任何帮助将不胜感激,谢谢。(注意:数据不是完全水平的)。

2个回答

[编辑讨论]

在第一个订单上,您的数据看起来像一个衰减,在一个小值范围内具有正源[0.70.49]×107,并且相对于曲线下面积的波动非常小。

因此,从远处看,您的数据更接近于一个几乎恒定的函数,而不是一些假定的振荡。因此,零或直流分量很重要。实际上,您的最大 FFT 幅度大约是5.9×107,如果我使用梯形近似,它恰好与您的数据的平均值匹配(0.7+0.49)/2=0.595(我希望你的 FFT 是标准化的)。

对于二阶观察,您可以尝试消除看起来呈指数的衰减趋势(例如,通过二阶或三阶的指数拟合或低阶多项式)。有了足够密集的点数,您还可以再次尝试导数(注意端点)或二阶导数,以查看是否出现周期性现象。但这可能会放大噪音。

三阶,在索引区间上[0,2000],我看到了大约一个数量级的辍学0.05×107. 消除趋势后,这可能看起来像一个单步下降,这可能会导致您的信号出现低频效应。

因为你的数据(我假设)是由一些有趣的东西乘以很小的数字组成的,再加上——大概是无趣的——k0+Nk1+N2k2, 在哪里N是你的“时代”。

所以数据的傅里叶变换作为一个整体是由傅里叶变换主导的k0+Nk1+N2k2.