目录

语法

说明

示例

移动平均滤波器

对矩阵行进行滤波

对各部分中的数据进行滤波

有理传递函数


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函数用法相关推荐

  1. matlab的filter函数,filter函数用法 matlab中filter函数的用法

    matlab中filter函数的用法如果你深爱的人此刻在你身边陪你,你怎么会有时间来看这些文字呢 离散系统的差分方程为 2y[k]-y[-1]-3y[k-2]=2x[k]-x[k-1] x[k]=(0 ...

  2. matlab sort descend,详解Matlab中 sort 函数用法

    搜索热词 (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,3; ...

  3. matlab中频域信号IFFT,MATLAB中ifft函数用法、性质、特性-以及与fft的组合应用全面深入解析(含程序)...

    MATLAB中ifft函数用法.性质.特性,以及与fft的组合应用全面深入解析(含程序) 前言 在我之前的<MATLAB中fft函数用法.性质.特性.缺陷全面深入解析(含程序)>中,我已经 ...

  4. Matlab中 intlinprog函数用法简介

    Matlab中 intlinprog函数用法简介 本来想要自己亲手写一遍的,发现了一优质博文基本上跟我做过的例题大差不差,所以就直接放上链接. 参考链接 https://www.cnblogs.com ...

  5. matlab stem 属性,matlab中stem函数用法_常见问题解析

    matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...

  6. stem什么意思matlab,matlab中stem函数用法_常见问题解析,matlab

    matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...

  7. matlab里randn是什么,matlab中randn函数用法

    matlab中randn函数用法 MATLAB 中的randn函数 matlab函数 randn:产生正态分布的随机数或矩阵的函数 randn:产生均值为0,方差σ^2 = 1,标准差σ = 1的正态 ...

  8. 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 ...

  9. length命令怎么用Matlab,matlab中length函数用法

    matlab中的length表示什么?应该如何使用? length:数组长度(即行数或列数中的较大值): 使用方法: n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值 ...

最新文章

  1. pytorch实现手写数字识别_Paddle和Pytorch实现MNIST手写数字集识别对比
  2. 安装编译PHP7.X
  3. PowerDesigner 导入sql脚本到MySQL乱码问题
  4. 京东数据产品专家分享“如何转行数据产品经理​?”
  5. 2018批量打印开关_从阿迪达斯到国产品牌,感受3D打印技术掀起的运动鞋中底革命...
  6. DAOSquare将于今晚9点-12点进行两轮ITO
  7. js渐渐入门之懒人框架- laz.js
  8. asp.net 2.0中的defaultulr属性
  9. activex 控件 过期_IE浏览器阻止过期ActiveX控件或将影响网银的使用-银行控件蓝屏...
  10. step 7在win10上安装教程及安装包
  11. 计算机网上邻居的网络密码是什么,网上邻居打开时需访问密码是怎么回事
  12. cif t t操作流程图_cif流程(cif贸易术语流程图)
  13. php 图片处理羽化,PS羽化图片边缘方法
  14. android adb pull 文件夹,android – 我如何adb拉SD文件夹中的所有文件
  15. 精益看板方法从理论到实战 (5)—— 控制在制品数量(上)
  16. 小学计算机上课课前导入视频教程,小学信息技术教学中微视频的导入实践分析...
  17. 计算机用户组怎么更改权限,win7系统用户组权限怎么设置
  18. FreeBbs论坛社区APP源码
  19. Linux 文档编辑 : ex 命令详解
  20. 30万条弹幕大军都推荐你去看的《山海情》,是怎样一部最搞笑最土味的扶贫剧

热门文章

  1. aws beanstalk mysql_将数据库添加到 Elastic Beanstalk 环境 - AWS Elastic Beanstalk
  2. 使用VS Code进行Java开发
  3. 计算机应用基础第1章在线考试,国开网计算机应用基础(本)形考作业一答案
  4. 公司拖欠工资,删代码删库跑路,违法么?
  5. Servlet的使用手把手教学(一)
  6. 20220305-ES6
  7. OG-488 SE|198139-51-4|Oregon Green 488 Succinimidyl Ester
  8. Rails服务器推送技术
  9. 每天进步一点点---------kibana/Grafana场景2小学排名折线
  10. 实现了一个百度首页的彩蛋——CSS3 Animation简介