关于matlab filter这个函数到底怎么用?

如题所述

filter是一维数字滤波器。

使用方法:

1、语法: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)

滤除向量X中的数据,其中b是分子系数向量,a是分母系数向量。如果a(1)不等于1的话,则就利用a标准化滤波器系数,可以利用多项式除法使分母变为1;如果 a 等于0,滤波器返回错误值。

2、算法实现

filter函数通过直接 II 型转置结构实现,可得下面的时域表达式:

y(n)=b(1)*x(n)+b(2)*x(n-1)+...+b(nb+1)*x(n-nb)-a(2)*y(n-1) - ... -a(na+1)*y(n-na)

其中 n-1是滤波器阶数,na 是后向反馈的滤波器阶数,nb 是前向反馈的滤波器阶数。

扩展资料

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。

主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多。

并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

参考资料来源:百度百科-zplane() Matlab函数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-08-11

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,滤波器返回错误值。

算法实现:

如上图所示,filter函数通过直接 II 型转置结构实现,通过分析上面原理图,可得下面的时域表达式

y(m) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)- a(2)*y(n-1) - ... - a(na+1)*y(n-na)     

其中 n-1是滤波器阶数,na 是后向反馈的滤波器阶数,nb 是前向反馈的滤波器阶数。此表达式还不是很明显,不太容易明白,此表达式可变型为

通常情况下,a(n-i)被归一化为1.

3、举例说明:

data = [1:0.2:4]';

windowSize = 5;

filter(ones(1,windowSize)/windowSize,1,data)

ans =

0.2000

0.4400

0.7200

1.0400

1.4000

1.6000

1.8000

2.0000

2.2000

2.4000

2.6000

2.8000

3.0000

3.2000

3.4000

3.6000

解析:

ones(1,windowSize)/windowSize,当windowSize=5时,生成的向量为[0.2 0.2 0.2 0.2 0.2],即分子系数向量 b = [0.2 0.2 0.2 0.2 0.2]

data = [1:0.2:4]' = [1 1.2 1.4 1.6 1.8 2 ··· ···3.8 4]

根据上面的表达式(2),以及 a(n-i) 归一化为1可知下面的推导过程,

y(1) = b(1) ·x(1) = 0.2·1 = 0.2;

y(2) = b(1)·x(2) + z1(1) = b(1)·x(2) + b(2)·x(1) = 0.2·1.2 + 0.2·1 = 0.44;

y(3) = b(1)·x(3) + z1(2) =b(1)·x(3) + b(2)·x(2) + z2(1) = b(1)·x(3) + b(2)·x(2) + b(3)·x(1) = 0.2·1.4 + 0.2·1.2 + 0.2·1 = 0.72

扩展资料:

filter功能:它使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“.

包括

1. 在servlet被调用之前截获;

2. 在servlet被调用之前检查servlet request;

3. 根据需要修改request头和request数据;

4. 根据需要修改response头和response数据;

5. 在servlet被调用之后截获.

你能够配置一个filter 到一个或多个servlet;单个servlet或servlet组能够被多个filter 使用。几个实用的filter 包括:用户辨认filter,日志filter,加密filter,符号filter,能改变xml内容的XSLT filter等。

参考资料:百度百科-Filter

本回答被网友采纳
第2个回答  推荐于2019-09-22

1、语法: 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) 滤除向量X中的数据,其中b是分子系数向量,a是分母系数向量。如果a(1)不等于1的话,则就利用a标准化滤波器系数,可以利用多项式除法使分母变为1;如果 a 等于0,滤波器返回错误值。

2、算法实现

filter函数通过直接 II 型转置结构实现,可得下面的时域表达式:y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)- a(2)*y(n-1) - ... - a(na+1)*y(n-na) ,其中 n-1是滤波器阶数,na 是后向反馈的滤波器阶数,nb 是前向反馈的滤波器阶数。

扩展资料

zplane(z, p) 绘制出列向量z中的零点(以符号“○” 表示)和列向量p中的极点(以符号“×”表示),同时画出参考单位圆,并在多阶零点和极点的右上角标出其阶数。如果z和p为矩阵,则zplane以不同的颜色分别绘出z和p各列中的零点和极点。

zplane(B, A) 绘制出系统函数H(z)的零极点图。其中B和A为系统函数H(z) = B(z)/A(z)的分子和分母多项式系数向量。 zplane(B, A) 输入的是传递函数模型,函数首先调用root函数以求出它们的零极点

参考资料:百度百科-matlab filter函数

本回答被网友采纳
第3个回答  2019-03-27

一、在MATLAB中,可以用函数y=filter(p,d,x)实现差分方程的仿真,即y=filter(p,d,x)用来实现差分方程,d表示差分方程输出y的系数,p表示输入x的系数,而x表示输入序列。输出结果长度数等于x的长度。

举例:实现差分方程,先从简单的说起:
filter([1,2],1,[1,2,3,4,5]),实现y[k]=x[k]+2*x[k-1]
y[1]=x[1]+2*0=1    (x[1]之前状态都用0)
y[2]=x[2]+2*x[1]=2+2*1=4

二、说明:输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母

并输入Zi指定X的初始状态,Zf为最终状态矢量 《Simulink与信号处理》

FILTER(B,A,X,[],DIM) 或 FILTER(B,A,X,Zi,DIM)指定X的维数DIM进行操作 book.iLoveMatlab.cn

举例k=-100:100; >> uk=[zeros(1,100),ones(1,101)]; >> a=[1 -5 6]; >> b=[2 -1]; >> x=uk; >> y=filter(b,a,x)

扩展资料:

MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为: 
Y = filter2(h,X) 其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。

例如: 其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。

本回答被网友采纳
第4个回答  推荐于2019-09-03

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)

举例:

k=-100:100;
>> uk=[zeros(1,100),ones(1,101)];
>> a=[1 -5 6];
>> b=[2 -1];
>> x=uk;
>> y=filter(b,a,x)

扩展资料:

MATLAB[1] 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

参考资料:MATLAB-百度百科

本回答被网友采纳
相似回答