FFT 中旁瓣的直觉

信息处理 fft
2022-01-04 17:57:25

我想知道是否有一种直观的方法来理解为什么在对固定长度的信号执行 FFT 时会出现旁瓣?

4个回答

我有两种解释,旨在提供超越简明数学解释的额外直观见解;首先,傅立叶级数展开的解释以及重复截断时域序列的想法,这显示了所导致的隐含不连续性,需要重建的频率分量比不截断波形时实际存在的频率分量要多。其次,将 DFT 视为一组不太好的滤波器的解释。

第一种解释:傅里叶级数展开和时间周期

时间限制序列的傅里叶变换与所有时间周期的序列的傅里叶变换相同。

时限序列的傅里叶变换

傅里叶变换和离散傅里叶变换都是如此,被称为 DFT 的周期性属性:

周期性属性:给定 N 点 DFT 向量 X[k],具有逆 DFT 样本 x[n],k 和 n 的范围从 0 到 N-1;如果 n 超出 0,1,2...,N-1 的范围,则

x[n]=x[modulo(n,N)]

同样,给定 N 点时间序列 x[n],具有 DFT X[k],如果 k 位于 0, 1,2,..., N-1 的范围之外,则

X[k]=X[modulo(k,N)]

为了帮助获得直观的理解,一个关键的方法是,在一个域中采样的任何东西,在另一个域中都会变成周期性的。类似地,在一个域中周期性的任何东西都会在另一个域中被采样(离散值)。具体而言,“采样”意味着信号将仅作为非零值存在于域中的离散位置(脉冲流)。

在一个域中采样 -> 在另一个域中的周期性:考虑使用 A/D 转换器采样之前和之后的 3 Hz 模拟余弦波的频谱。数字频谱可以看作是周期性的;数字频谱的圆柱视图也是解释周期性的有效视图,但我发现这种扩展到模拟频域(通过将频率扩展到 +/- 无穷大)有助于一些人直观地了解所涉及的信号处理.

ADC 采样

一个域中的周期性 -> 另一个域中的采样:考虑傅里叶级数展开作为一个简单的例子来展示这个属性。傅里叶级数展开是在从 0 到 T 的有限时域间隔内完成的。当分解成单独的频率分量时,使用的唯一频率是 DC、基频 1/T 和 1/T 的整数倍(谐波)。实际上,由于频率只能以 1/T(和 DC)的倍数存在,因此已对频域进行了采样。

在此处输入图像描述

此外,如果我们重构时域波形,通过将各个频率分量相加,如果我们允许频率分量超出区间 0 到 T,我们还可以查看时域中的隐含周期性。正是因为这种周期性频率分量不能存在于除 1/T 的倍数之外的任何其他频率(因为相反的条件:如果它们确实存在,那么它们将不会在 0 到 T 时间间隔内一致地开始和结束,因此不存在周期性)。

在此处输入图像描述

理解上述内容将有望帮助提供对频谱泄漏的直观解释。 所以现在我将重复一个要点:

时间限制序列的傅里叶变换与所有时间周期的序列的傅里叶变换相同。

在此处输入图像描述

“傅立叶级数展开”视图的频谱泄漏:

考虑从 0 到 T 时间间隔内的两个正弦波形,第一个在时间间隔内具有整数个周期,而第二种情况具有非整数个周期。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

很明显,在案例 1 中,我们可以通过重复视图看到,即使重复我们的纯正弦曲线仍然是纯正弦曲线,但在案例 2 中,我们的正弦曲线现在遭受突然转换,并且使用重构的傅里叶级数展开视图,将需要几个频率分量来在时域中重建这样的波形。

在此处输入图像描述

第二种解释:DFT 的滤波器组视图

另一个对频谱泄漏的直观解释(通常有助于理解 DFT)是我所说的 DFT 的滤波器组视图。要看到这一点,请考虑一个简单的 4 pt DFT,如下图所示,并观察每个 bin,我们有效地旋转信号,然后将旋转后的值通过 4 抽头单位增益 FIR 滤波器。对于对应于 DC 的第一个 bin,没有旋转,因此我们只是将四个样本相加,而对于其他 bin,我们在通过 DFT bin 时逐渐以更高的频率旋转:

在此处输入图像描述

(旁注 - 如果我们执行流式 DFT,我们在扫描波形时在 4 点序列上计算新的 4 点 DFT,它就是这样一个滤波器组,但不管我们是否这样做,这除了数学解释所揭示的频域中 sinc 函数的通常卷积之外,视图还提供了对频谱泄漏的深刻见解)

在此处输入图像描述

现在考虑每个等效 FIR 滤波器的频率响应,使用 DFT 中给出的系数(例如在 Matlab 或 Python 中使用 freqz([coeff])),如下图所示。(请注意,滤波器系数与 DFT 矩阵中显示的顺序相反。这是因为滤波器的系数在时间上颠倒了;最早的采样时间在 FIR 滤波器状态寄存器的远端,所以颠倒了及时):

过滤器库

这里是要点:由于 DFT 结构中的每个滤波器基本上都是单位增益 FIR 滤波器,因此该滤波器的频率形状会随着 DFT 的长度变长而接近 sinc 函数(并且对于小 N)。因此我们将这些 sinc 滤波器称为 sinc 滤波器,并注意 sinc 滤波器具有相对较高的旁瓣,并且其包络随频率滚降非常缓慢(纯 sinc 为 1/f)。使用 DFT 中的相位旋转器,我们只需将此 sinc 滤波器的主瓣移动到每个感兴趣的 bin,但每个 bin 存在的旁瓣允许其他位置的频率导致能量出现在该 bin中。这些过滤器完全可以预测泄漏量。

使用此视图,考虑一个输入单音信号,其频率位于两个频率区间之间的某个位置,如下图所示(恰好存在于任何区间上的输入将在时域间隔中具有整数个周期,因此没有我们之前展示的光谱泄漏)。顶部滤波器显示了该频率位置处将“泄漏”到第一个 bin 的幅度。第二个滤波器显示幅度(略高),第三个频段(我们的频率最接近)将具有最高响应,第四个频段将较低。

在此处输入图像描述

概括

我提出了两种解释,旨在提供额外的直观除了在时域中乘以矩形窗口的简洁数学解释之外,洞察力是频域中的卷积(因此,我们看到的泄漏是 sinc 函数在频率上与我们及时截断的感兴趣波形卷积的结果) ; 首先,傅立叶级数展开的解释以及重复截断时域序列的想法,这显示了所导致的隐含不连续性,需要重建的频率分量比不截断波形时实际存在的频率分量要多。其次,将 DFT 视为一组滤波器的解释,以及在那方面的差滤波器(特别是随着 N 增加接近正弦函数频率响应的单位增益滤波器)。

当你拉出N来自较长长度样本流的正弦曲线样本(因为您所能做的就是通过N样本到 FFT),您正在应用一个窗口。矩形窗口。

加窗是时域中的乘法。时域中的乘法对应于频域中的卷积。您看到的旁瓣是窗函数的傅立叶变换与单个谱线(即正弦曲线的傅立叶变换)卷积的结果。

DFT 的基向量在 DFT 孔径宽度内都是精确的整数周期。如果您的信号在固定长度内不完全是整数周期,则它不能由 DFT 基向量的任何单个频率准确和完整地表示。如果您的信号类似于正弦曲线,那么它通常主要由单个 DFT 结果频率箱表示(加上它是严格实输入的复共轭镜像),但由于它可能在频率上不完全匹配,所以剩下的,非- 匹配能量必须在某处表示,DFT 结果才能完全表示信号。剩余的能量进入旁瓣。

如果从信号中减去最佳匹配但恰好是整数周期正弦波,则差异(可能看起来像一个细扭曲的三角形或蝴蝶结,试试看)是由旁瓣表示或分解的。

旁瓣的形状是 Sinc(或更准确地说,是周期性 Sinc 或 Dirichlet 核),因为这是对任何有限长度信号的矩形窗口的变换。

我正在非常缓慢地自学 DSP,并且已经思考过类似的问题。我希望对您有用的非常简单的解释是:

每个 FFT bin 恰好代表一个特定频率。因此,要表示与 bin 的确切频率不对应的频率意味着它必须在两个 bin 之间,即它将被涂抹在两个 bin 上。

当您考虑 FFT 只能应用于信号的一部分这一事实时,通常在您应用 FFT 的信号部分的每一端都有一个不连续性。这很难简单解释,但我想你可以认为它迫使数学引入大量额外的正弦波来模拟不连续性并且你污染了更多的垃圾箱(这回答了这个问题,关于窗户的下一点是旁白),因此为了减轻这种情况,使用一个窗口来平滑每一端的不连续性,但要在改变信号的范围内。

当我说频率时,我指的是给定频率的正弦波,因此傅立叶分析假设您将信号视为正弦波的总和。