Matlab中filter函数用法
目录
语法
说明
示例
移动平均滤波器
对矩阵行进行滤波
对各部分中的数据进行滤波
有理传递函数
filter函数是1 维数字滤波器。
语法
y = filter(b,a,x)y = filter(b,a,x,zi)y = filter(b,a,x,zi,dim)[y,zf] = filter(___)
说明
y = filter(b,a,x) 使用由分子和分母系数 b 和 a 定义的有理传递函数对输入数据 x 进行滤波。
如果 a(1) 不等于 1,则 filter 按 a(1) 对滤波器系数进行归一化。因此,a(1) 必须是非零值。
如果 x 为向量,则 filter 将滤波后数据以大小与 x 相同的向量形式返回。
如果 x 为矩阵,则 filter 沿着第一维度操作并返回每列的滤波后的数据。
如果 x 为多维数组,则 filter 沿大小不等于 1 的第一个数组维度进行计算。如果 x 为多维数组,则 filter 沿大小不等于 1 的第一个数组维度进行计算。
y = filter(b,a,x,zi) 将初始条件 zi 用于滤波器延迟。zi 的长度必须等于 max(length(a),length(b))-1。
y = filter(b,a,x,zi,dim) 沿维度 dim 进行计算。例如,如果 x 为矩阵,则 filter(b,a,x,zi,2) 返回每行滤波后的数据。
[y,zf] = filter(___) 还使用任一上述语法返回滤波器延迟的最终条件 zf。
示例
移动平均滤波器
移动平均滤波器是用于对含噪数据进行平滑处理的常用方法。此示例使用filter函数计算沿数据向量的平均值。创建一个由正弦曲线数据组成的1×100行向量,其中的正弦曲线被随机干扰所损坏。
t = linspace(-pi,pi,100);
rng default %initialize random number generator
x = sin(t) + 0.25*rand(size(t));
移动平均值滤波器沿数据移动长度为windowSize的窗口,并计算每个窗口中包含的数据的平均值。以下差分方程定义向量 x 的移动平均值滤波器:
窗口大小为 5 时,计算有理传递函数的分子和分母系数。
windowSize = 5;
b = (1/windowSize)*ones(1,windowSize);
a = 1;
求数据的移动平均值,并绘制其对原始数据的图。
y = filter(b,a,x);plot(t,x)
hold on
plot(t,y)
legend('Input Data','Filtered Data')
对矩阵行进行滤波
此示例使用以下有理传递函数对数据的矩阵进行滤波。
创建一个由随机输入数据组成的2×15矩阵。
rng default %initialize random number generator
x = rand(2,15);
定义有理传递函数的分子和分母系数。
b = 1;
a = [1 -0.2];
沿着x的第二维度应用传递函数并返回每行的一维数字滤波结果。绘制原始数据的第一行对已滤波数据的图。
y = filter(b,a,x,[],2);t = 0:length(x)-1; %index vectorplot(t,x(1,:))
hold on
plot(t,y(1,:))
legend('Input Data','Filtered Data')
title('First Row')
绘制输入数据的第二行对已滤波数据的图。
figure
plot(t,x(2,:))
hold on
plot(t,y(2,:))
legend('Input Data','Filtered Data')
title('Second Row')
对各部分中的数据进行滤波
使用滤波器延迟的初始条件和最终条件对各部分中的数据进行滤波,尤其是需要考虑内存限制时请执行此操作。生成一个大型的随机数据序列并将其拆分为两段:x1 和 x2。
x = randn(10000,1);x1 = x(1:5000);
x2 = x(5001:end);
整个序列 x 是 x1 和 x2 的垂直串联。定义有理传递函数的分子和分母系数,
b = [2,3];
a = [1,0.2];
对子序列 x1 和 x2 进行滤波,一次一个。输出对 x1 进行滤波的最终条件,以便在第一段末尾存储滤波器的内部状态。
[y1,zf] = filter(b,a,x1);
将对 x1 进行滤波的最终条件用作对第二段也就是 x2 进行滤波的初始条件。
y2 = filter(b,a,x2,zf);
y1 是来自x1的滤波后的数据,而y2是来自x2的滤波后的数据。整个滤波后的序列是y1和y2的垂直串联。同时对整个序列进行滤波以供比较。
y = filter(b,a,x);isequal(y,[y1;y2])ans = logical1
b
- 有理传递函数的分子系数
有理传递函数的分子系数,指定为向量。
a
- 有理传递函数的分母系数
有理传递函数的分母系数,指定为向量。
x
- 输入数据
输入数据,指定为向量、矩阵或多维数组。
zi
- 滤波器延迟的初始条件
滤波器延迟的初始条件,指定为向量、矩阵或多维数组。
如果 zi 是向量,则它的长度必须是 max(length(a),length(b))-1。
如果 zi 是矩阵或多维数组,则主维度的大小必须为 max(length(a),length(b))-1。剩余的每个维度的大小必须与 x 的相应维度的大小匹配。例如,假设沿 3×4×5 数组 x 的第二个维度 (dim = 2) 使用 filter。数组 zi 的大小必须为 [max(length(a),length(b))-1]×3×5。
由 [] 指定的默认值将所有滤波器延迟初始化为零。
dim
- 沿其运算的维度
沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。以一个二维输入数组 x 为例。
如果 dim = 1,则 filter(b,a,x,zi,1) 沿着 x 的行进行计算并返回应用于每列的滤波器。
如果 dim = 2,则 filter(b,a,x,zi,2) 沿 x 的列进行计算,并返回应用于每一行的滤波器。
如果 dim 大于 ndims(x),则 filter 返回 x。
y
- 滤波后的数据
滤波后的数据,以向量、矩阵或大小与输入数组 x 相同的多维数组的形式返回。如果 x 的类型为 single,则 filter 本身以单精度进行计算,y 的类型也是 single。否则,y 以 double 类型返回。
zf
- 滤波器延迟的最终条件
滤波器延迟的最终条件,以向量、矩阵或多维数组的形式返回。
如果x是一个向量,则zf是长度为max(length(a),length(b))-1的列向量。
如果x是矩阵或多维数组,则 zf 是长度为 max(length(a),length(b))-1的列向量数组,其中zf中的列数等于x中的列数。例如,假设沿3×4×5数组x的第二个维度 (dim = 2) 使用filter。数组zf 的大小为 [max(length(a),length(b))-1]×3×5。
有理传递函数
Z变换域中这种 filter 运算的输入-输出说明是一种有理传递函数。有理传递函数采用如下形式:
可同时处理FIR和IIR滤波器[1]。na是反馈滤波器阶数,nb是前馈滤波器阶数。由于归一化,假定a(1) = 1。还可以将有理传递函数表示为以下差分方程:
此外,也可以使用如下图所示的 direct-form II 转置实现表示有理传递函数。此处,na = nb。
filter在样本 m 处的运算由时域差分方程给定
提示
如果有 Signal Processing Toolbox™,请将 y = filter(d,x) 与digitalFilter(Signal Processing Toolbox) 对象d结合使用来对输入信号x进行滤波。要根据频率响应设定生成d,可以使用designfilt (Signal Processing Toolbox)。
如果有 DSP System Toolbox™,将 y = filter(dObj,x) 与 dfilt (DSP System Toolbox) 对象 dObj 结合使用来对输入信号 x 进行滤波。
要将 filter函数与来自 FIR 滤波器的b系数结合使用,请使用 y = filter(b,1,x)。
有关滤波函数的详细信息,可以参考数字滤波(Signal Processing Toolbox)。
Matlab中filter函数用法相关推荐
- matlab的filter函数,filter函数用法 matlab中filter函数的用法
matlab中filter函数的用法如果你深爱的人此刻在你身边陪你,你怎么会有时间来看这些文字呢 离散系统的差分方程为 2y[k]-y[-1]-3y[k-2]=2x[k]-x[k-1] x[k]=(0 ...
- matlab sort descend,详解Matlab中 sort 函数用法
搜索热词 (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,3; ...
- matlab中频域信号IFFT,MATLAB中ifft函数用法、性质、特性-以及与fft的组合应用全面深入解析(含程序)...
MATLAB中ifft函数用法.性质.特性,以及与fft的组合应用全面深入解析(含程序) 前言 在我之前的<MATLAB中fft函数用法.性质.特性.缺陷全面深入解析(含程序)>中,我已经 ...
- Matlab中 intlinprog函数用法简介
Matlab中 intlinprog函数用法简介 本来想要自己亲手写一遍的,发现了一优质博文基本上跟我做过的例题大差不差,所以就直接放上链接. 参考链接 https://www.cnblogs.com ...
- matlab stem 属性,matlab中stem函数用法_常见问题解析
matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...
- stem什么意思matlab,matlab中stem函数用法_常见问题解析,matlab
matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...
- matlab里randn是什么,matlab中randn函数用法
matlab中randn函数用法 MATLAB 中的randn函数 matlab函数 randn:产生正态分布的随机数或矩阵的函数 randn:产生均值为0,方差σ^2 = 1,标准差σ = 1的正态 ...
- sort函数降序排列matlab,详解Matlab中 sort 函数用法
(1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4 ...
- length命令怎么用Matlab,matlab中length函数用法
matlab中的length表示什么?应该如何使用? length:数组长度(即行数或列数中的较大值): 使用方法: n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值 ...
最新文章
- pytorch实现手写数字识别_Paddle和Pytorch实现MNIST手写数字集识别对比
- 安装编译PHP7.X
- PowerDesigner 导入sql脚本到MySQL乱码问题
- 京东数据产品专家分享“如何转行数据产品经理​?”
- 2018批量打印开关_从阿迪达斯到国产品牌,感受3D打印技术掀起的运动鞋中底革命...
- DAOSquare将于今晚9点-12点进行两轮ITO
- js渐渐入门之懒人框架- laz.js
- asp.net 2.0中的defaultulr属性
- activex 控件 过期_IE浏览器阻止过期ActiveX控件或将影响网银的使用-银行控件蓝屏...
- step 7在win10上安装教程及安装包
- 计算机网上邻居的网络密码是什么,网上邻居打开时需访问密码是怎么回事
- cif t t操作流程图_cif流程(cif贸易术语流程图)
- php 图片处理羽化,PS羽化图片边缘方法
- android adb pull 文件夹,android – 我如何adb拉SD文件夹中的所有文件
- 精益看板方法从理论到实战 (5)—— 控制在制品数量(上)
- 小学计算机上课课前导入视频教程,小学信息技术教学中微视频的导入实践分析...
- 计算机用户组怎么更改权限,win7系统用户组权限怎么设置
- FreeBbs论坛社区APP源码
- Linux 文档编辑 : ex 命令详解
- 30万条弹幕大军都推荐你去看的《山海情》,是怎样一部最搞笑最土味的扶贫剧
热门文章
- aws beanstalk mysql_将数据库添加到 Elastic Beanstalk 环境 - AWS Elastic Beanstalk
- 使用VS Code进行Java开发
- 计算机应用基础第1章在线考试,国开网计算机应用基础(本)形考作业一答案
- 公司拖欠工资,删代码删库跑路,违法么?
- Servlet的使用手把手教学(一)
- 20220305-ES6
- OG-488 SE|198139-51-4|Oregon Green 488 Succinimidyl Ester
- Rails服务器推送技术
- 每天进步一点点---------kibana/Grafana场景2小学排名折线
- 实现了一个百度首页的彩蛋——CSS3 Animation简介