窗口期(重叠)和 FFT

信息处理 fft 窗函数 stft 时间序列 窗户
2022-02-03 15:26:57

改变窗口周期(即两帧之间重叠的点数)如何影响 FFT 结果?

假设通过 FFT 将时间序列信号转换为频域,窗口大小 =2048,窗口重叠 =1024,并将输出绘制为频谱。现在如果窗口重叠减少到 512,频谱图的外观会改变吗?

3个回答

除了其他人已经说过的,我将尝试从纯粹的实际角度来回答它(这也是重叠添加技术的一种变体)。

如果您的 FFT 长度为 2048,则重叠 1024 (50%) 意味着您的分析 (FFT) 帧数是没有任何重叠的帧数的两倍。512 个样本重叠(75%)意味着帧数是原来的 4 倍,以此类推。

重叠的目的主要是为了减少开窗的影响。大多数窗口函数(例如 Blackman、Hamming 等)都是锥形的,这意味着它们在帧边缘附近下降到 0(或接近 0)。当然,这会影响 FFT 结果,我们可能会丢失一些重要信息(例如瞬态)。

因此,为了减少窗口的这种负面影响,我们使用重叠。这里的基本思想是我们可以对重叠帧的 FFT 结果进行平均,从而获得更好的时域信号频率表示。实际的频率分辨率仍然与没有重叠的情况相同。

例如,假设我们使用 1024 个样本进行 FFT,并且我们有 50% 的重叠(512 个样本)。我们可以平均 3 个重叠帧来计算最终(平均)幅度值

M_avg[frame][i] = (M[frame-1][i]+M[frame][i]+M[frame+1]]i])/3 ; // i is just a bin index--in this case the bins range from 0 to 512

因此,为了计算例如第 5 帧的幅度,我们对第 4 帧、第 5 帧和第 6 帧的幅度进行平均,然后除以 3(平均帧数)

还有其他重叠的用例,但上面描述的可能使用最多。

如果保持采样率和 FFT 大小相同但更改重叠,则每单位时间的 FFT 数量将发生变化。在二维光谱图中,当绘制相同的持续时间时,单位时间内更多数量的 FFT(或 STFT)将使图的宽度大致增加一倍,或者缩小 X 轴尺寸。

它会影响结果,因为您必须遵守恒定重叠相加条件 (COLA),以便在 STFT 期间计算的连续 FFT 的总和能够正确重建整个信号的 FFT。

这是 COLA 条件:

m=w[nmR]=1nZ

在哪里

  • w[n]是窗户
  • R是连续窗口之间样本的跳跃大小

因此,如果您选择的窗口重叠不遵守可乐条件,您的 STFT 将无法正确重建信号。

参考:https ://ccrma.stanford.edu/~jos/sasp/Overlap_Add_OLA_STFT_Processing.html