繁体   English   中英

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

[英]How to find the FFT of an unevenly sampled signal in python3?

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

除了建议的答案之外,如果您的目标是找到频率(并且出于某种原因不必使用 FFT - 我无法从您的问题中推断出这一点),您可以考虑使用periodograms 更具体地说, Lomb-Scargle Periodogram - 它可以产生与不均匀间隔数据相对应的频率。

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

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

您必须对信号重新采样,以便获得均匀间隔的样本。

这稍微超出了本论坛的范围,但您可以从dsp stackexchange开始

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

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

  • 使用 N 为 2 的幂和 N*dt > Tmax - Tmin 或您感兴趣的任何时间窗口制作 N 个点的缓冲区。

  • 将您的点分布在 2 个最近的点上,或者如果您不介意更多的“模糊”,只需将其放在最近的点上。

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

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

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

请注意,数字信号处理本身就是一个领域。 我建议探索那个兔子洞,但确实希望在那里度过相当长的时间。

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

如果信号的带宽限制在最宽样本间距所隐含的采样率以下,您可以尝试在不均匀间隔的样本之间进行多项式插值,以在时间上创建大约相同数量的等间隔样本的网格。 但是,根据多项式次数,这可能对限带或采样过程中的任何噪声高度敏感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM