这个例子展示了如何建立线性卷积和循环卷积之间的等价性。
线性卷积和循环卷积是根本不同的运算。然而,在某些条件下,线性卷积和循环卷积是等价的。建立这种等价关系具有重要意义。对于两个向量,x
和Y
,循环卷积等于向量DFT乘积的逆离散傅里叶变换(DFT)。了解线性卷积和循环卷积等效的条件,可以使用DFT高效地计算线性卷积。
函数的线性卷积N-点向量,x
,及L-点向量,Y
,有长度N+L- 1.
关于矩阵的循环卷积x和Y要等效,必须用零填充向量,使其长度至少相等N+L- 1,然后再做DFT。当你将两个dft的乘积反转后,只保留第一个N+L-1要素。
创建两个向量,x
和Y
,并计算两个向量的线性卷积。
x=[21];y=[1 2 3];clin=conv(x,y);
输出长度为4+3-1。
用零填充两个向量,长度为4+3-1。获得两个向量的DFT,乘以DFT,然后获得乘积的逆DFT。
xpad=[x个零(1,6-长度(x))];ypad=[y个零(1,6-长度(y))];ccirc=ifft(fft(xpad)。*fft(ypad));
零填充向量的循环卷积,xpad
和伊帕德
,相当于x
和Y
.您保留了ccirc
因为输出的长度为4+3-1。
绘制线性卷积的输出和DFT乘积的倒数,以显示等价性。
子地块(2,1,1)茎(临床、,“填充”)ylim([0 11])标题(“x和y的线性卷积”)子批次(2,1,2)阀杆(ccirc,“填充”)ylim([0 11])标题(“xpad和ypad的循环卷积”)
将向量填充到长度12,并使用DFT乘积的逆DFT获得循环卷积。仅保留前4+3-1个元素,以产生与线性卷积等效的结果。
N=长度(x)+长度(y)-1;xpad=[x零(1,12-长度(x))];ypad=[y零(1,12-长度(y))];ccirc=ifft(fft(xpad)。*fft(ypad));ccirc=ccirc(1:N);
信号处理工具箱™ 软件有一个功能,cconv
,返回两个向量的循环卷积。您可以获得x
和Y
对以下代码使用循环卷积。
ccirc2=cconv(x,y,6);
cconv
内部使用与前一示例中所示的相同的基于DFT的过程。