conv是做卷积,就是按照书上的做法,先翻转,在一步步平移,得出结果。对于两个长度分别为n,m的序列,卷积结果长度为m+n-1
filter是做滤波,其实原理跟卷积是想通的,只不过处理结果的方法不同,先看示例程序:
x=[1,2,3,4,5]; h=[1,1,1]; y1=conv(h,x) y2=filter(h,1,x) y3=filter(x,1,h) y4=filter(x,1,[h,zeros(1,4)])
结果为:
y1 = 1 3 6 9 12 9 5 y2 = 1 3 6 9 12 y3 = 1 3 6 y4 = 1 3 6 9 12 9 5
现在对结果一一作出解释;
1.y1的确是严格按照卷积的数学表达式计算的,不解释。
在解释后面几条时,先说一下filter的用法:filter(B,A,X),其中B,A组成一个差分方程,X是输入信号,例如:
filter([1,2],1,[1,2,3,4,5])实现 y[k]=x[k]+2*x[k-1]
咱们这里讨论的就是A=1的情况。有了基本说明,现在言归正传:
2.说明filter函数平移停滞在X的最后一个输入与滤波器的第一个系数对齐时。这里为
从
1 1 1 5 4 3 2 1 输出1,到 1 1 1 5 4 3 2 1 输出12
3.验证2的观点,这里为:
从
1 2 3 4 5 1 1 1 输出1,到 1 2 3 4 5 1 1 1 输出6
4.依然是验证2的观点,从
1 2 3 4 5 0 0 0 0 1 1 1 1 输出1,到 1 2 3 4 5 0 0 0 0 1 1 1 1 输出5
并且,第4种情况下,通过补0使得所有的1都移到了滤波器抽头的末尾,这个结果与卷积是相同的。
到这里,我想大家就明白了二者的区别和关系。