如何在python3中找到不均匀采样信号的FFT?

时间:2016-06-17 15:05:30

标签: python python-3.x signals signal-processing fft

我有一个带有不均匀间隔(时间)样本的数据。如何找到信号的FFT并绘制它。

3 个答案:

答案 0 :(得分:1)

您不能对不均匀采样的信号进行FFT。这使FFT基于的数学假设无效。

您必须重新采样信号,以便均匀分布样本。

这稍微超出了本论坛的范围,但您可以启动in the dsp stackexchange

如果您想要快速而肮脏的解决方案,请使用以下方法:

  • 选择小于或等于点之间最小时间的时间延迟 - > dt或者您感兴趣的最大频率的倒数的20%。

  • 制作具有N个点的缓冲器,其中N的幂为2且N * dt> Tmax - Tmin,或您感兴趣的任何时间窗口。

  • 将您的积分分布在最近的2个点上,或者如果您不介意再点'模糊',只需将它放在最近的点。

你最终会得到一个带有尖峰和零点的缓冲区,但其能量与原始信号相同。

现在使用FFT并且仅使用频率线的最低20%左右。

这是一种令人难以置信的“原始”和“近似”的做事方式,但它会在频率上给出一些近似的摆动电源条。您可以通过应用窗口清除信号。

请注意,数字信号处理本身就是一个领域。我建议探索那种rabbithole,但确实要花一些时间在那里。

答案 1 :(得分:0)

要使用FFT,您需要创建一个均匀间隔的样本矢量。

如果信号被限制到低于最宽样本间距所暗示的采样率,则可以在不均匀间隔的样本之间尝试多项式插值,以创建大约相同数量的等间隔样本的网格。但是,根据多项式程度,这可能对频带限制或采样过程中的任何噪声都非常敏感。

答案 2 :(得分:0)

除了建议的答案,如果您的目标是找到频率(出于某种原因(不是我想从您的问题中得出,没有使用FFT),您可以考虑使用< strong>周期图;更具体地讲,菱形痕迹周期图-可以产生与间隔不均匀的数据相对应的频率。

这是一个很好的answer,说明了这一建议。