【问题标题】:Waveform frequency resolution for FFT – any way to increase it?FFT 的波形频率分辨率——有什么方法可以提高它?
【发布时间】:2021-05-11 22:52:31
【问题描述】:

这篇文章https://www.bitweenie.com/listings/fft-zero-padding/ 给出了输入数据到 FFT 的时间长度与 FFT 中可以区分的两个频率之间的最小距离之间的简单关系。文章称这种波形为频率分辨率。

换句话说;如果两个输入频率的频率比 1/time-length_of_input_data 更接近,它们将在 FFT 图中仅显示为一个峰值。

我的问题是:有没有办法提高这个波形频率分辨率?由于这个限制,我发现很难使用相当短的数据系列。

例如,如果我在 240 个数据点上使用周期为 9.5、10 和 11 的正弦序列组合,我无法区分不同的频率。

【问题讨论】:

  • 套用 Scotty 的话说:“你不能改变物理定律,船长!”

标签: python fft


【解决方案1】:

要获得良好的频率结果,您需要较长的时间序列。

这是一个基本问题,称为uncertainty principle。在傅里叶分析(傅里叶变换、DFT、短时傅里叶变换等)中无法克服。

另请注意,零填充不会解决此问题。 它在频域中给出了更多的点,从某种意义上说,相同的光谱信息被更密集地采样,但它不会使峰更尖锐或更分离。

克服不确定性原理的唯一方法是对数据做出进一步的假设。

  • 例如,如果您知道只有一个频率分量,则可以比不确定性原理预测的更准确地确定其频率。
  • 您还可以使用诸如Vigner-Wille transform 之类的转换。它不受不确定性原理的约束,但会产生“交叉项”,即频率分量伪影。但是,当您只有很少的频率分量时,这可能是可以接受的。取决于用例。

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2013-07-13
    • 2012-12-11
    相关资源
    最近更新 更多