【 MATLAB 】filter 函数介绍 之 Filter Data in Sections

【 MATLAB 】filter 函数介绍(一维数字滤波器)

在上篇博文中,里面有一个例子,就是过滤部分中的数据,这个部分中的数据的意思是如果有一个向量需要过滤,我们可以把它分为几段,然后分段过滤。

关于这个问题,使用语法:

[y,zf] = filter(___)

赋值符号左边的部分有一个y是过滤后的数据,那至于zf到底是个什么玩意,当时没有弄清楚,所以这里来专门讨论一番,参考MATLAB的参考文档的例子。

赋值符号右边的部分,可以是函数filter的语法中任何一种,即:

filter(b,a,x):对x进行滤波;

filter(b,a,x,zi):关于zi的解释,我们看下面这一段:


zi — Initial conditions for filter delays
[] (default) | vector | matrix | multidimensional array

Initial conditions for filter delays, specified as a vector, matrix, or multidimensional array.

滤波器延迟的初始条件,指定为矢量,矩阵或多维数组。

  • If zi is a vector, then its length must be max(length(a),length(b))-1.

  • If zi is a matrix or multidimensional array, then the size of the leading dimension must be max(length(a),length(b))-1. The size of each remaining dimension must match the size of the corresponding dimension of x. For example, consider using filter along the second dimension (dim = 2) of a 3-by-4-by-5 array x. The array zi must have size [max(length(a),length(b))-1]-by-3-by-5.

 

The default value, specified by [], initializes all filter delays to zero.

Data Types: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Complex Number Support: Yes


对比zf,看看zf的解释:

zf — Final conditions for filter delays
vector | matrix | multidimensional array

Final conditions for filter delays, returned as a vector, matrix, or multidimensional array.

滤波器延迟的最终条件,作为矢量,矩阵或多维数组返回。

  • If x is a vector, then zf is a column vector of length max(length(a),length(b))-1.

  • If x is a matrix or multidimensional array, then zf is an array of column vectors of length max(length(a),length(b))-1, such that the number of columns in zf is equivalent to the number of columns in x. For example, consider using filter along the second dimension (dim = 2) of a 3-by-4-by-5 array x. The array zf has size [max(length(a),length(b))-1]-by-3-by-5.

Data Types: double | single


filter(b,a,x,zi,dim):dim是指定维度,如果x是一个矩阵,那么如果dim为1(默认值),那么就把对矩阵的每个列进行滤波,如果dim为2,则对矩阵的行进行滤波。


Filter Data in Sections


Use initial and final conditions for filter delays to filter data in sections, especially if memory limitations are a consideration.


Generate a large random data sequence and split it into two segments, x1 and x2.
x = randn(10000,1);

x1 = x(1:5000);
x2 = x(5001:end);
The whole sequence, x, is the vertical concatenation of x1 and x2.

Define the numerator and denominator coefficients for the rational transfer function, 

b = [2,3];
a = [1,0.2];

Filter the subsequences x1 and x2 one at a time. Output the final conditions from filtering x1 to store the internal status of the filter at the end of the first segment.
[y1,zf] = filter(b,a,x1);

Use the final conditions from filtering x1 as initial conditions to filter the second segment, x2.
y2 = filter(b,a,x2,zf);
y1 is the filtered data from x1, and y2 is the filtered data from x2. The entire filtered sequence is the vertical concatenation of y1 and y2.

Filter the entire sequence simultaneously for comparison.
y = filter(b,a,x);

isequal(y,[y1;y2])


上面这个例子,验证了一种情况,就是如果对一个序列进行滤波,可以得到一个结果。

也可以通过另一种方式,就是把该序列分成两段,分段滤波,最后将滤波数据拼接起来,对比两种方式的最终结果,发现是一致的。

对第一段数据进行滤波时候会得到一个zf,这个zf作为第二段数据滤波时候的zi。

 

 


 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李锐博恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值