外行的频谱泄漏

信息处理 傅里叶变换 自由度
2021-12-27 19:00:24

我试图理解 DFT 的频谱泄漏的概念,而不深入了解数学的复杂性(这是出于实际目的)。我从“Introduction to Digital Signal Processing Using MATLAB with Application to Digital Communications”一书中读到:

使用 DFT 的原因之一是确定离散时间信号的频谱。如果输入信号中的频率与其中一个 DFT bin 不一致,则该特定信号的 DFT 幅度将不会是类似脉冲的形状。相反,它将分布在整个 DFT 箱中。也就是说,输入的离散时间序列在特定频率下的能量会泄漏到其他相邻的 bin 中。它在整个频率区间上涂抹类似脉冲的频率。因此,相应的光谱只是近似的。这就是所谓的 DFT 泄漏。

但是,我似乎不清楚。您能否更清楚地解释 DFT 的频谱泄漏概念?如果可以的话,也许举个例子

3个回答

从我们所知道的开始:

  • DFT 非常适合单周期波形输入。对于单周期波形,所有谐波都有整数个周期(根据“谐波”的定义)。
  • “频谱泄漏”发生在输入不是单周期波形时。因此,至少一个频率分量不是由整数个周期表示。

查看 DFT 的一种方法是作为一种算法,它探测输入波形的所有可能正弦曲线,确定每个正弦曲线的频率和相位。幸运的是,我们要探测的正弦曲线数量有限,因为我们知道它们一定是谐波。

如果您知道预期的相位,则探测特定频率的一种方法是在相同相位乘以您正在寻找的相同频率的正弦曲线。如果您采用该逐点乘法的平均值,它会给出一个与您正在寻找的组件的幅度成比例的值。针对任何不匹配的谐波,结果平均为零。否则,它与输入中该频率的幅度成正比。这适用于输入中存在的任意数量的谐波。

这是一个例子,探测一次谐波。乘法结果的平均值,平均得到目标峰值的一半: 在此处输入图像描述

下面是一个目标与探头频率不同的示例——结果波具有平均为零的正负点,表示不匹配: 在此处输入图像描述

这种场景的缺点是需要提前知道谐波分量的相位。然而,另一种方法是探测两次,一次使用余弦波,另一次使用正弦波。由于它们具有相位关系,在这两个结果之间,我们可以确定被测输入谐波的幅度和相位。有关详细信息,请参阅我的文章对 FFT 的温和介绍在 DFT 中,复数“bin”值的实部表示其余弦结果,虚部表示正弦结果。

但是,如果输入中的频率分量不是整数个周期,那么它就不是真正的正弦曲线,也不是谐波——如果您尝试端到端重复,很容易看出。而且它不会与任何探测频率对齐,并且数学不能具有完全匹配或完全取消单个探测的属性。例如,如果输入非常接近单周期正弦曲线,但具有多个单周期,则预期一次谐波的探测和平均将给出一个小于完美匹配的值,随后的谐波测试也不会完全取消。这就是“泄漏”,如果你想把它看作是漏掉的能量泄漏到别处。

想象一个连续的信号有一个振幅的频率分量A正好是 20 Hz(你可以想象它是单独的,一个完美的波)。

使用 FFT 或任何离散傅立叶变换,您可能希望,如果您已正确获取信号(高于 Nyquist),离散频谱将为您提供一个清晰的振幅峰值A在 20 赫兹。一般情况并非如此。一般情况下不是这样,部分能量A将在 20 Hz、20.1、19.9 等处传播。

恕我直言,泄漏是一个糟糕的术语。最好的表示是一个更具描述性的描述,虽然是冗长的描述。

想象一个立体声,其中一个显示器带有与频率相对应的条。它们通常会反弹很多,但它们确实给出了频率内容的代表性视图。

现在,让我们将立体声音响带入实验室,并为其提供从低频到高频的稳定音调信号扫描。显然,当音调达到其中一个小节的频率时,它应该非常高。但是它附近的酒吧呢?暂时将它们全部归零。

当音调在两个小节频率的中间时会发生什么?常识会说,周围的两个横杆应该很高,一样高,但不要像撞到横杆一样高。

DFT 的工作方式就是这样。当纯复音的频率(以每帧周期为单位测量)是整数值时,只有对应于该音的 bin 具有非零值。bin 索引对应于每帧的周期数。对于实值纯音,它是两个相反的复音的平均值,两个 bin(共轭对)是非零的。

对于介于两个 bin 中间的频率,与理想的立体声条相比,DFT 在某种意义上“更混乱”。您可以将立体声条视为 bin 值的大小,它是一个复数。

不仅邻居条的高度大致相同,下一个邻居也有一些高度,依此类推。