4

我已阅读有关 fft 和分辨率的所有维基百科文章和 stackoverflow 文章。但是,在学习如何在没有巨大延迟问题的情况下获得高分辨率频率方面没有任何帮助。

如果我正确理解信号处理:

我的采样率为 44,100,占用 256 个块。那么频率分辨率将是 44,100/2/256 = 86.1 Hz 每个频率仓与 FFT。

我经常看到诸如http://www.tunelab-world.com/http://www.spectraplus.com/之类的示例,它们能够确定低至 0.01 Hz 的频率。

如果我用上述方法做到这一点,我需要 4410,000 个 bin 才能获得这种分辨率。在 44,100 采样率下,从输入中填充数据需要 100 秒。

我知道我错过了一些东西,但我不知道是什么。

我怎样才能得到一个信号,然后以这种精度绘制图表或显示峰值的频率,而不需要大量的垃圾箱或永远等待?

在此先感谢您的帮助!

4

3 回答 3

3

如果你想要一个高频分辨率的 FFT 输出,你必须对许多样本执行 FFT:根本没有办法解决这个问题。

您可能在其他应用程序中看到的是重叠的:他们可能对第一组数据执行 4096 pt FFT,然后移动 256 个样本并执行另一个 4096 pt FFT(在他们已经使用的 3840 个样本上,加上一个新的256 个样本)。

这允许您以精细的频率分辨率显示定期(不同)更新。它不适合捕获瞬态信号,但在活动显示器上看起来不错。

于 2011-07-24T23:00:06.363 回答
2

您可以获得更好精度的原因是频率估计问题比许多其他估计问题更适合以更高的精度解决。

准确度的 Cramer-Rao 下限 (CRLB)由下式给出

在此处输入图像描述

这意味着频率估计的方差(预期误差的度量)随着T的立方下降,即测量的持续时间。“正常”估计问题倾向于使该度量随着T的平方下降。

使用 FFT 最大化器(具有最大峰值的 bin)只会得到T的平方。

正如 Adrian Taylor 所说,您提供的示例可能从更多的样本开始,然后以更短的持续时间进行更新。

对于踢球,这里有一些可能感兴趣的频率估计算法。它们比 FFT 更快,更准确。

于 2011-07-25T00:19:46.833 回答
1

SpectraPlus 说“高达 1,048,576 点的高分辨率 FFT 分析”;这不会让你在 44.1 kHz 时达到 0.01 Hz 的分辨率。

TuneLab 似乎下降到 0.01 美分,但“频谱显示”似乎在 440 Hz 时的分辨率约为 2.5 Hz。“相位显示”没什么特别的。

你想做什么?如果您只想实现吉他调音器,则不需要(并且可能不想要)FFT。不知道更好,我会去一个PLL。

于 2011-07-25T00:19:26.253 回答