matlab中filter,conv之间的区别

来源:互联网 发布:php extension intl. 编辑:程序博客网 时间:2024/04/29 12:11

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     5y2 =     1     3     6     9    12y3 =     1     3     6y4 =     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的最后一个输入与滤波器的第一个系数对齐时。这里为

11154321输出1,到11154321输出12

3.验证2的观点,这里为:

12345111输出1,到12345111输出6


4.依然是验证2的观点,从

1234500001111输出1,到1234500001111输出5


并且,第4种情况下,通过补0使得所有的1都移到了滤波器抽头的末尾,这个结果与卷积是相同的。


到这里,我想大家就明白了二者的区别和关系。

原创粉丝点击