我已阅读有关fft和分辨率的所有维基百科文章和stackoverflow文章。但是,没有任何东西有助于学习如何获得高分辨率频率而不会出现巨大的延迟问题。
如果我理解信号处理正确:
我的采样率为44,100,我采用256块。然后,频率分辨率将为每个频率仓具有FFT的4400 / 2/256 = 86.1 Hz。
我不断看到http://www.tunelab-world.com/和http://www.spectraplus.com/等能够确定频率低至.01 Hz的示例。
如果我用上述方法做到这一点,我需要4410,000个箱才能获得这种分辨率。在44,100采样率下,从输入中填充数据需要100秒。
我知道我错过了一些东西,但我无法弄清楚是什么。
如何获取信号,然后绘制图表或以这种精确度显示峰值的频率,而无需花费数十亿个箱子或永远等待?
提前感谢您的帮助!
答案 0 :(得分:3)
如果你想要一个高频率分辨率的FFT输出,你必须在许多样本上执行FFT:根本没有办法解决这个问题。
你可能在其他应用程序中看到的是重叠:它们可能在第一组数据上执行4096 pt FFT,然后沿256个样本移动并再执行4096 pt FFT(在他们已经使用过的样本的3840上,加上新的256个样本。)
这使您可以以精细的频率分辨率显示常规(不同)更新。它对于捕获瞬态信号没有好处,但在活动显示器上看起来很好。
答案 1 :(得分:2)
您可以获得更高精度的原因是频率估计问题有助于以比其他许多估计问题更高的精度求解。
Cramer-Rao下界(CRLB)的准确度为given by:
这意味着频率估计的方差(预期误差的度量)下降为 T 的立方,即测量的持续时间。 “正常”估计问题倾向于将此度量下降为 T 的平方。
使用FFT最大化器(具有最大峰值的bin)只能获得 T 的平方。
正如阿德里安·泰勒所说,你给出的例子可能是从更多的样本开始,然后以更短的持续时间进行更新。
对于踢球,可能会感兴趣的是some frequency estimation algorithms here。它们比FFT更快,更准确。
答案 2 :(得分:1)
SpectraPlus称“高分辨率FFT分析高达1,048,576分”;这将无法让你在44.1 kHz时达到0.01 Hz的分辨率。
TuneLab似乎下降到0.01美分,但“频谱显示”似乎在440 Hz时的分辨率约为2.5 Hz。 “相位显示”并不特别。
你想做什么?如果您只想实现吉他调谐器,则不需要(也可能不需要)FFT。不知道更好,我会选择PLL。