线性卷积 matlab 实现

x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
x3 = conv(x1,x2)

image

x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2)     %MATLAB 自带的函数
circonvt(x1,x2,9)        %前面一节刚写的函数

image

如果将X1 与X2 通过补零而成为N =(N1+N2-1)点序列,那么循环卷积就与线性卷积一样了。

差别在于循环移位和线性移位。

x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2)
circonvt(x1,x2,7)

image

x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2)
circonvt(x1,x2,5)

image

x1 = [1,2,2,1];
x2 = [1,-1,-1,1];
%x3 = conv(x1,x2)
circonvt(x1,x2,6)

image

实现中的N过大时会占用较多存储空间 当N选取的值比要求值小时就会引入误差

当选取N = max(N1,N2)做循环卷积时,前(M-1)个样本在误差中(即有别于线性卷积),这里M = min(N1,N2)。

原文地址:https://www.cnblogs.com/sleepy/p/2099307.html