低于频率分辨率的 DFT 中隐藏了什么?

信息处理 离散信号 自由度
2022-02-19 11:31:25

设置:信号采样率 1000Hz,DFT 1s 1000 个样本。这产生了 1Hz 的频率分辨率。

我知道,这是有意义频率的限制,当我想读取 0.5Hz 时,要么采样率加倍,要么采样率加倍。

困扰我的是,当我在没有任何频谱窗口的人工信号(稀疏信号、一些 k Hz 余弦和一些 0.5 Hz 余弦,例如 2Hz、5.5Hz、12Hz、14.5Hz 等)的给定设置中计算 0.5Hz 的 DFT 时,结果似乎有效。我知道这不应该发生,因为信号密集、频率不完美(频率分辨率的倍数)和噪声情况变得复杂。

我在频率分辨率以下究竟读到了什么,它可能工作的条件是什么?

2个回答

以 0.5 Hz 间隔计算 DFT 相当于将信号附加 1000 个零,然后计算 2000 点 DFT。应该清楚的是,这不会给信号添加任何真实信息。然而,它有时会很有用。

这种零填充真正发生的是,您看到的是频谱的插值版本。这意味着在每两个“有效”点之间(间隔为 1 Hz),您会看到另一个产生插值的点,这可能是您的频谱的更平滑版本。插值内核本质上是一个 sinc 函数(准确地说是周期化 sinc)。

根据您想对光谱做什么,这样的插值结果在视觉上可能更令人愉悦,有时更清楚地显示我们本来会错过的东西。

特别是,如果你有一个谐波信号并且它的频率不在 DFT 网格上,你的 DFT 将不会显示一条线,而是多条线。这也被称为尖桩篱栅效应。这张图片可能会令人困惑,在这种情况下,插值版本会更清楚地向我们展示正在发生的事情,因此更容易解释。此外,这使我们能够以更高的精度找到实际频率(注意:分辨率不会因此而提高,但精度会提高)。

这里有两个例子。在每个示例中,为了清楚起见,我都考虑了 N = 30。对于第一个示例,我们的频率为 5 Hz,正好落在 DFT 网格上。30 点 DFT(用红色表示)只给出一条线)。为清楚起见,添加了带有虚线的插值版本。您可以清楚地看到类似 sinc 的插值内核,以及在网格情况下我们如何准确地对零交叉进行采样,这就是我们只看到一条线的原因。

并网频率

在第二个示例中,频率被选择为离网频率(5 到 6 Hz 之间)。现在 30 点 DFT 显示了许多线,如果我们只有这些线,可能很难看出这些线仅源于一个谐波。再次添加插值 DFT 显示了与之前非常相似的图片:我们可以看到它看起来像一个谐波,我们可以更好地发现它的最大值。

Off-Grif 频率

对于跨帧的单个纯音,低于每帧 1 个周期的频率(DFT 不关心采样率)表示跨帧的单个周期的分数。从理论上讲,它们可以像在整个帧中具有更多周期的音调一样准确地测量。只要只有一个纯音,就可以求出频率(然后是相位幅度和幅度)。不过,越接近 DC(或 Nyquist),计算对噪声就越敏感。

这些文章给出了准确描述单个纯音的 bin 值的公式。它们适用于分数频率的情况。

请注意,对实数值公式进行插值将与小数值的 DFT 定义不匹配。它们是仅在整数值处匹配的等式的简化形式。正是这种简化使得这些公式在数学上是可逆的,从而产生了这些文章其余部分中的方程。

这些文章给出了计算频率的公式:

这些文章给出了相位和幅度估计的公式:

注:“两仓方案”中的方法是对“方法一”的改进。

是的,这些都有效。它们在数学上都是精确的。它们在各种情况下的噪声鲁棒性不同,因此在给定的一组情况下可以使用最佳公式。