DFT计算线性卷积——重叠保留法

DFT计算线性卷积——重叠保留法

引入

设h(n)和x(n)都是有限长序列,长度分别为N和M。它们的线性卷积和循环卷积分别表示如下:

yc(n)=h(n)x(n)=m=0N1h(m)x(nm)

yl(n)=h(n)x(n)=[m=0L1h(m)x((nm))L]RL(n)

其中 Lmax[N,M] x((n))L=i=x(n+iL)

只有当循环卷积长度 LN+M1 时,线性卷积等于循环卷积

yc(n)=[i=yl(n+iL)]RL(n)

否则时域混叠

重叠保留法

所谓重叠保留法,就是对输入序列进行分段 (设长度为M),但相邻两段必须重叠V个点,然后计算各段与h(n) (设长度为N) 的L(L≥M)点循环卷积,得到输出序列 ym(n) ,m表示第m段的循环卷积计算输出。最后,从 ym(n) 中选取B个样值顺序连接得到 y(n)
其中 V=N-1,B=M-V=M-N+1,B应取 ym(n) 中第V+1 ~ V+B共计B个样值,若记n=0,1,……,M-1,则B的取值为n=N-1,N,……,M-1时的 ym(n) 的值。

由线性卷积的定义可以看出,当计算 n=n0 时的线性卷积时,与 x(n0) 及其前N-1个值有关。所以计算 h(n)xm(n) 时,结果(共N+M-1个数值)的前N-1个值与后N-1个值是有误的,只有中间的M-N-1个值是正确的,即是应当选取的B个样值。因为计算 h(n)xm(n) 时,n<0及n>M-1时认为 xm(n)=0 ,而实际 xm(n) 的前面 xm1(n) 与后面 xm+1(n) 是不一定为零的。故对输入序列进行分段时,相邻两段必须重叠V个点,有误点的卷积值要再次计算。

实际中计算机计算循环卷积要快于线性卷积,当L=M时, ym(n)=h(n)xm(n) yml(n)=h(n)xm(n) ,由线性卷积与循环卷积的关系式可以看出 yml(n) 在做以L为周期的延拓时相邻两次延拓重叠了N-1个点,即L点循环卷积的结果(长度为M)与线性卷积结果(长度为N+M-1,取前M项比较)相比,前N-1个值有误(混叠),后M-(N-1)个值相等。恰好与实际相比 yml(n) 结果的前N-1项也是有误的(见上一段分析),故循环卷积与直接计算线性卷积的分析结果一致,都舍去前N-1个值而保留接下来的M-(N-1)个值。

当取L>M时, yml(n) 在做以L为周期的延拓时相邻两次延拓重叠小于N-1个点,但由于受限仍然应舍去前N-1个值而保留接下来的M-(N-1)个值。原因见直接计算线性卷积的分析。

Ⓛ:代表L点循环卷积
* :代表线性卷积

部分内容参考《数字信号处理(第三版)》高西全,丁玉美编著
ISBN 978-7-5606-0922-5/TN•0160
博主学习时的一点见解,欢迎斧正。

你可能感兴趣的:(DFT计算线性卷积——重叠保留法)