DSP:重叠相加和窗口化

时间:2019-08-27 11:10:02

标签: signal-processing windowing

我编写了一个DSP程序,该程序使用重叠添加,如下所示:
1.传入数据分为N个样本的块
2.每个块用另外N个零扩展,因此该块现在有2N个样本
3.将2N块通过FFT,获得2N频谱
4.将2N频谱与Sinc低通滤波器内核频谱相乘
5.将得到的2N频谱通过逆FFT运算,得到2N块
6.在之前的运行的最后N个样本中添加前N个样本

这似乎工作得很好。假设我向输入提供了一个很好的正弦信号,所以在输出端得到了一个很好的(低通滤波)正弦信号。我想指出的是,输出信号未显示任何已在块中对其进行处理的指示。

现在这让我感到困惑:
他们说您还需要使用开窗功能。我认为应该将每个输入块(N个样本)通过开窗函数放置,然后再将其扩展为2N个样本。
但是,如果这样做,每个块都会淡入和淡出漂亮的正弦信号。当然,输出信号看起来很相似:曾经是一个不错的正弦信号,现在却是不断重复的淡入和淡出。这不是我想要的,是吗?

在我看来,使用重叠添加时执行窗口化是错误的。据我了解,当查看隔离的数据块的频谱时,窗口化很有用,但是通过重叠叠加,我可以得到某种连续的数据流,对吗?

1 个答案:

答案 0 :(得分:2)

通过重叠相加进行快速卷积时,通常不会(非矩形)对输入数据进行窗口化。

但是您可能需要打开过滤器内核的窗口,以确保它不太长。数据块长度(N)加滤波器脉冲响应或内核长度(M)的总和不得超过FFT长度(> = N + M-1)

如果要结合过滤进行分析,则一种可能性是将输入数据重叠50%,并使用von Hann窗口。之所以可行,是因为50%重叠的von Hann窗口的大小之和是一个未调制的常数(除了第一个和最后一个块之外)。因此,求和(重叠相加)后,数据不会淡入和淡出。或者,您可以只使用单独的FFT,使用窗口式FFT进行分析,而使用非窗口式FFT进行重叠快速卷积。