使用 Goertzel 算法是否真的能提供更好的频率分辨率?

信息处理 fft 频谱 解决
2022-01-05 00:45:48

我正在阅读这篇文章,我对作者对 Goertzel 算法的“频率分辨率”的自由使用感到有些困惑。

基本问题:使用 Goertzel 算法实际上是否可以在特定的感兴趣频带上为您提供更高的频率分辨率,或者它是否仅在指定的感兴趣频带上有效地计算 FFT,但在由采样频率除以数字指定的相同频率分辨率下样品?

例如,让我们说Fs为 100 KHz,(固定)和数据样本数ñ是 10000。(也是固定的)。如果我计算一个正常的 FFT,其中 FFT 长度也是ñ,我的频率分辨率是Fsñ正如预期的那样,它将等于 10 Hz。这意味着我的垃圾箱间隔 10 赫兹,从 -50,000 赫兹到 50,000 赫兹。

现在让我们假设我想使用 Geortzel 算法仅查看 20,000-21,000 Hz 范围内的频率。如果我使用相同的ñ对于样本数,并使用相同的ñ对于我的 FFT 大小,那么我的频率分辨率是多少?还是 10 赫兹?或者是21,000-20,00010000=0.1赫兹?

我有一种感觉,我并没有真正提高我的频率分辨率,就像简单地在主瓣上插值一样,通过使用相同的ñ像我从 0 到 50,000 一样评估从 21,000 到 20,000 的频率。

这是一个正确的理解吗?

2个回答

你的理解是正确的。

当用于在格策尔长度。但是许多形式的 Goertzel 算法只提供幅度,而不是 FFT 1 bin 结果的复数结果或相位。此外,在计算上,通用 Goertzel 在数值上可能比通用 FFT 稍微不稳定。对于孔径中的非整数周期频率,结果等效于相同长度的 DFT 或 FFT 的 bin 之间的 sinc 插值(与更典型的 FFT 结果的抛物线插值相比,插值可能更准确)。

可以说插值增加了图形意义上的分辨率(更多的绘图点),或者更容易在视觉上发现最大值,但不是在信息论意义上,也不是为了更好地将 2 个紧密间隔的谱线分离为 2 个单独的峰。

我无法访问您所指的文章,但我认为您可能会发现这篇文章很有趣。作者介绍了他们的 Goertzel 算法版本,该算法可用于查找给定信号中基频非整数倍的频率处的幅度和相位。这意味着他们的算法确实提高了频率分辨率。文章包含数学证明和算法代码。