重叠相关的算法
在实际中,常遇到长序列卷积短序列的问题。
一长序列x(n)在和单位抽样响应h(n)进行卷积时,需要利用截短(分块)x(n)的方法,变成和h(n)长度接近。每段分别和h(n)线性卷积,首尾相接时需要进行一些处理,才能得到成和原来长序列卷积h(n)相同的结果。
假设h(n)长度为M,分块的xL(n)长度为N:
重叠相加法
顾名思义,就是需要将重叠部分相加,这里的重叠指的是线性卷积之后的数据前后帧进行重叠。线性卷积后M-1点和下次结果的前M-1重叠,重叠部分相加,这时对分块的输入序列xL(n)不需要重叠。如果希望利用DFT替代卷积来减少计算量,那么需要转成对应的圆周卷积(循环卷积),就涉及到对xL(n)和h(n)扩充到L>=M+N-1点,这样IDFT的结果才能对应上实现线性卷积,这里采用xL(n)进行补零到M+N-1点,h(n)同样补零处理。
重叠保留法
对信号进行截短,面临同样的问题,只不过重叠操作放到了xL(n)扩充后的数据上,这里xL(n)利用旧数据的后M-1点和新数据N点,h(n)正常补零到N+M-1点,利用DFT和IDFT,该圆周卷积结果的前M-1点数据是混叠的,所以舍去,保留了后N点,假设这里的M-1=N,那么就是常见的旧数据和新数据拼成L=2N点,FFT,点乘,IFFT,舍去前M-1=N点,保留后N点的方法。即重叠保留法实现长序列卷积短序列。
加权重叠相加法
不考虑长序列卷积短序列,只考虑x(n)信号变换及恢复(重建)问题。由于变换到频域需要进行FFT变换,为减少频域泄漏需要加窗处理(替换矩形窗),加窗就是加权的意思。最后在恢复最初信号的时候,需要利用窗函数重叠相加等于1的影响,输入信号由于加窗涉及到两个序列点乘,导致信号的窗移等于窗总长度减去重叠部分。
这里重叠的根本原因是基于块数据变换有一个严重缺点,即块效应。这是各个变换块之间不连续性和微小的边界误差导致的。这样在重建信号时将导致引入周期性噪声,可以做低通滤波去除块边界处的“突跳”,但是这样高频信息会丢失,高频决定细节。更一般的做法是采用重叠,这是专门针对块块效应的。