MATLAB新手学习记录——filter函数使用
上学期刚学过《信号与系统》,因此这个寒假打算在确定考研(有一丢丢可能保研)目标院校之余,学习如何使用MATLAB对《信号与系统》中的一些内容进行分析和实现。
特此使用博客帮助记录与温习
filter概念与基本语法
filter函数是一维的数字滤波器,主要的应用语法如下所示
y = filter(b,a,X)
[y,zf] = filter(b,a,X)
[y,zf] = filter(b,a,X,zi)
y = filter(b,a,X,zi,dim)
[…] = filter(b,a,X,[],dim)
以最简单的 y = filter(b,a,X) 为例
y = filter(b,a,X) 滤除向量X中的数据,其中b是分子系数向量,a是分母系数向量。如果a(1)不等于1的话,则就利用a(1)标准化滤波器系数,可以利用多项式除法使分母变为1;如果 a(1) 等于0,滤波器返回错误值。
可实现差分方程
Y = FILTER(B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母
整个滤波过程是通过下面差分方程实现的:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + … + b(nb+1)*x(n-nb)-a(2)*y(n-1) – a(3)*y(n-2) + … + a(nb+1)*y(n-nb)
图片源于百度
例:
filter([1,2],1,[1,2,3,4,5])
实现 y[k]=x[k]+2*x[k-1]
括号中向量b为x[k]、x[k-1]、…的系数,向量a为y[k]、y[k-1]、…的系数。
x为需要滤波的向量,y为滤波后的向量(显然,x和y的长度是一样的,看后面例子就知道了)。
举个例子来说明filter的原理,如下:
a = [1 2];
b = [2 3];
x = [1 2 3 4 5 6];
y = filter(b, a, x)
y =
2 3 6 5 12 3
下面给出具体的计算过程如下:
a(1)y(1) = b(1)x(1); %可以求出y(1)
a(1)y(2) = b(1)x(2)+b(2)x(1) –a(2)y(1); %可以由y(1)求出y(2)
a(1)y(3) = b(1)x(3)+b(2)x(2)-a(2)y(2); %可以由y(2)求出y(3)
a(1)y(4) = b(1)x(4)+b(2)x(3)-a(2)y(3); %可以由y(3)求出y(4)
a(1)y(5) = b(1)x(5)+b(2)x(4)-a(2)y(4); %可以由y(4)求出y(5)
a(1)y(6) = b(1)x(6)+b(2)x(5)-a(2)y(5); %可以由y(5)求出y(6)
计算结束,得到y(n)(n=1、2、…、6)
目前就暂且记到这里
今天的文章MATLAB中filter的理解与使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24287.html