这个例子展示了如何建立线性卷积和循环卷积之间的等价性。
线性卷积和循环卷积是完全不同的运算。然而,在某些情况下,线性卷积和循环卷积是等价的。建立这种等价关系具有重要意义。两个向量,x
和y
,循环卷积等于向量的DFT乘积的离散傅里叶反变换(DFT)。知道线性卷积和循环卷积等价的条件允许你使用DFT来有效地计算线性卷积。
a的线性卷积N分向量,x
和一个l分向量,y
,长度N+l- 1。
对于的圆卷积x和y要相等,必须用0填充向量,使其至少长度相等N+l- 1,然后再做DFT。当你将两个dft的乘积反转后,只保留第一个N+l- 1的元素。
创建两个向量,x
和y
,并计算这两个向量的线性卷积。
X = [2 1 2 1];Y = [1 2 3];中国= conv (x, y);
输出长度为4+3-1。
将两个0的向量填充到长度为4+3-1。求两个向量的DFT,将DFT相乘,得到乘积的DFT逆。
Xpad = [x 0 (1,6-length(x))];Ypad = [y 0 (1,6-length(y))];ccirc =传输线(fft (xpad)。* fft (ypad));
零填充向量的循环卷积,xpad
和ypad
的线性卷积x
和y
.你保留了所有的元素ccirc
因为输出的长度是4+3-1。
绘制线性卷积的输出和DFT乘积的逆以显示等价性。
次要情节(2,1,1)干细胞(中国,“填充”) ylim([0 11]) title(x和y的线性卷积次要情节(2,1,2)干细胞(ccirc,“填充”) ylim([0 11]) title(xpad和pad的循环卷积)
将向量填充到长度为12,并使用DFT乘积的逆DFT得到圆卷积。只保留前4+3-1个元素,以产生与线性卷积等价的结果。
N =长度(x) + (y) 1;Xpad = [x 0 (1,12-length(x))];Ypad = [y 0 (1,12-length(y))];ccirc =传输线(fft (xpad)。* fft (ypad));ccirc = ccirc (1: N);
信号处理工具箱™软件具有以下功能:cconv
,它返回两个向量的循环卷积。你可以得到的线性卷积x
和y
使用循环卷积与以下代码。
ccirc2 = cconv (x, y, 6);
cconv
在内部使用前面示例中演示的相同的基于dft的过程。