线性卷积 matlab 实现
x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
x3 = conv(x1,x2)
x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2) %MATLAB 自带的函数
circonvt(x1,x2,9) %前面一节刚写的函数
如果将X1 与X2 通过补零而成为N =(N1+N2-1)点序列,那么循环卷积就与线性卷积一样了。
差别在于循环移位和线性移位。
x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2)
circonvt(x1,x2,7)
x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2)
circonvt(x1,x2,5)
x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2)
circonvt(x1,x2,6)
实现中的N过大时会占用较多存储空间 当N选取的值比要求值小时就会引入误差
当选取N = max(N1,N2)做循环卷积时,前(M-1)个样本在误差中(即有别于线性卷积),这里M = min(N1,N2)。