滤波器开发之三:基于算数平均的阶进平滑滤波器

本文介绍了一种基于算术平均的阶进平滑滤波器,它能有效应对周期性和小幅噪声干扰,通过调整偏差值区间提高系统灵敏度。在数据快速变化时,能保持良好的响应速度,而在系统平稳时,又能提供优秀的滤波效果。

信号采集是非常常见的需求,我们也总是希望采集到的数据是纯净而真实的,但这只是我们的希望。环境中存在太多的干扰信号,为了让我们得到的数据尽可能地接近实际值,我们需要降低这些干扰信号的影响,于是就有了滤波器的用武之地。这里我们讨论的主要是软件实现的数字滤波器,这一篇我们就来讨论基于递推算术平均算法的阶进平滑滤波器。

1、问题的提出

前面一篇我们讨论了同时提高灵敏度和滤波效果的方法,在通常情况下,都能达到比较理想的效果。不过在有些情况下,我们的采集对象会是处于一定的区间内,并且干扰信号也主要存在于这一区间内。也就是说干扰信号的幅值并不是很大,但持续存在;而被测信号也基本处于一个稳定的被测区间内。在这种情况下,被测信号越是处于目标范围内,干扰的影响越是不可忽略。在这一篇中我们就来设计一种滤波算法实现这样的需求。

首先,我们来分析一下,干扰信号较小,但持续不断对最终数据有较大影响。因为在有些应用中,当系统稳定时,采集的数据理论上来讲是不应该出现很大波动的。基于这一点我们可以考虑对比本次采集与上次输出之间的偏差值,如果偏差值大于一定的限值则我们认为是数据发生了较大变化,远大于干扰造成的影响,干扰可以忽略,所以我们直接对数据进行更新。当数据偏差处于一定的变化范围之内时,但系统并未处于稳定状态,但干扰信号已经不能完全忽略了,我们可以进行部分滤波处理。当数据偏差小于一定的值之后,我们认为是处于稳定的范围内,这时干扰造成的影响于数据的变化不能忽略,我们需要采用完全滤波。具体如图所示:

上图中SL1和SL2是我们要设定的阶进处理区间限值。当数据偏差小于SL2时,干扰信号对最终数据的影响较大,我们需要进行完全滤波。当系统变化处于上图中的SL1和SL2之间时,数据差异变较大,干扰信号相比于数据本身的变化较小,但不可忽略,我们可以进行不完全滤波来增加系统的灵敏度。当系统处于大于SL1的区间时,干扰信号对系统的影响很小,我们可以不做滤波处理。

2、算法设计

前面描述了这种分段增加滤波作用的滤波器的特点,接下来我们来设计这种阶进式滤波器的操作算法。

首先依然需要一个数据队列,但在不同的情况下,对数据队列的更新形式是不一样的。在前后两个数据的偏差小于SL2时,这个时候我们需要对这采集数据进行完全的滤波处理。这个时候我们只需要用最新的数据替换时间最久的老数据,然后取队列的算术平均值就得到输出数据。具体的队列更新如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值