conv()函数表示的是对某个离散序列做卷积运算,比如说两个数组:
x(n)=[3,11,7,0,-1,4,2],-3<=n<=3;h(n)=[2,3,0,-5,2,1],-1<=n<=4;
求两者的卷积则可以进行如下运算:
>> x=[3,11,7,0,-1,4,2];
>> h=[2,3,0,-5,2,1];
>> conv(x,h) ans = 6 31 47 6 -51 -5
41 18 -22 -3 8 2 -4≤n≤7
其运算机理是:先将上面的第二个离散序列反转,之后进行移位相乘。
其中运算之后的序列的长度是这两个序列的长度相加并减去1。
对于xcorr()函数表示的两个序列对于较短的序列先将其后面补零到相等。之后不反转直接进行移位相乘。不翻转相乘是拿xcorr()的第二个参数的值的末尾与第一个参数的开头开始移位相乘,所以xcorr(x,h)和xcorr(h,x)的结果是不一样的。
>>xcorr(x,h)
ans =
Columns 1 through 8
0.0000 3.0000 17.0000 14.0000 -41.0000 -27.0000 41.0000
58.0000
Columns 9 through 13
-2.0000 -13.0000 10.0000 14.0000 4.0000