常见的几种数字滤波算法及特点

一、均值滤波

均值滤波即对多个采样值进行求和、取平均,是消除随机误差最常用的方法,主要分为以下几种:

1. 算术平均滤波

原理: 在采样周期T内,对测量信号y连续进行m次采样,并把m个采样值相加取算术平均值作为本次的有效采样值。即:
Y = (y1+y2+y3+···+ym) / m ;
其中采样次数m的值决定了信号的平滑度和灵敏度。提高m的值可以改善平滑度,但系统灵敏度随之降低。因此,采样次数m 取值随被控对象的不同而不同。一般情况下,流量信号可取10左右,压力信号可取4左右,而温度、成分等缓慢变化信号可取2甚至不进行算术平均。在编程时m一般取2、4、8等(2的整数幂),以便用移位来代替除法运算求得平均值。

特点: 采样的平滑度与灵敏度之间存在矛盾(采样次数少则平滑性差,次数多则灵敏度下降);且无法消除偶然的干扰脉冲,只是将均值作为了结果,测量精度有所降低。

2. 去极值平均滤波

原理: 去极值平均滤波与算术平均滤波原理相似,只是在算术平均滤波的基础上,先将m个数据中的最大值与最小值剔除,再计算余下的m-2个数据的算术平均值。即:
Y = [ (y1+y2+y3+···+ym) - ymax - ymin ] / (m-2) ;
相应地,在编程时m一般取4、6、10等(2的整数幂+2),以便用移位来代替除法运算求得平均值。其中剔除最值常用的排序方法是冒泡排序或选择排序。

特点: 采样的平滑度与灵敏度之间存在矛盾(采样次数少则平滑性差,次数多则灵敏度下降)。

3. 加权平均滤波

原理: 对每次的采样值以不同的权系数(越新鲜的采样值权重越大)相加,m一般取到4即可,即:
Y = (C1·y1+C2·y2+C3·y3+···+Cm·ym) ;
例如m=4时,权系数可以取:C1=e-3t/R, C2=e-2t/R, C3=e-t/R, C4=1/R,其中R=e-3t+e-2t+e-t+1;

特点: 可以协调系统平滑性与灵敏度之间的矛盾,在不降低平滑性的前提下提高灵敏度,更适用于纯滞后较大的对象。

4. 滑动平均滤波

原理: 滑动平均滤波是在每个采样周期只采样一次,将这一次的采样值和过去的若干采样值一起求平均,所得结果为有效采样值。
不妨以取m个采样值求滑动平均为例,利用循环队列的结构方式来暂存数据,每新采集一个数据便并入该队列的队尾,同时“挤”掉队首的一个数据,这样在队列中能够始终保持有m个不断更新的数列。

特点: 当系统的采样速度较慢或采样信号变化较快时,能够保证系统的实时性。

二、中值滤波

原理: 将信号y进行连续采样,把所得到的m个采样值按大小进行排序,取中值作为本次采样的有效采样值。(当m为奇数时取中间数,当m为偶数时取中间两数的均值;一般m取3~5次即可)。

特点: 对于 缓慢变化过程中的偶然因素所引起的波动 或 采样器不稳定造成的误差所引起的脉动干扰 比较有效;但由于采样点的限制,应用范围不宽,不适用于快速变化过程(如流量)的信号采样。

三、限幅滤波

经验说明,生产过程中许多物理量变化需要一定时间,因此相邻两次采样值之间的变化幅度应在一定限度内,即 |Yn - Yn-1| ≤ ΔY。

原理: 限幅滤波就是通过比较两次相邻采样值差的绝对值和最大允差ΔY(取决于采样周期和信号变化率),从而得到有效采样值。
即:当 |Yn - Yn-1| ≤ ΔY 时,表明本次采样真实,取本次采样值为有效采样值;当 |Yn - Yn-1| > ΔY时,表明本次采样不真实,取前1次采样值为有效采样值。简易理解如下:
Y = Yn, (| Yn - Yn-1 | ≤ ΔY)------差距合理,此次测量有效
Y = Yn-1,(| Yn - Yn-1 | > ΔY)----差距过大,此次测量不作数

特点: 限幅滤波对随机干扰或因采样器不稳定引起的失真有良好的滤波效果。主要用于变化比较缓慢的参数,如温度、物理位置等测量系统。具体应用时,关键的问题是最大允差ΔY的选取,ΔY太大,各种干扰信号“乘虚而入”,使系统误差增大;ΔY太小,又会使某些有用信号被“拒之门外”,使采样效率变低。因此,门限值ΔY的选取非常重要,通常可根据经验数据获得,必要时也可由实验得出。

四、限速滤波

原理: 把当前采样值Yn与前两次采样值Yn-1、Yn-2进行比较,取差值的绝对值ΔY作为比较依据,分别得到有效采样值Y,即:
Y=Yn-1,( | Yn-1-Yn-2 | ≤ ΔY )-----仅前两次的差值<ΔY,取前1次的采样值
Y=Yn, ( | Yn-1-Yn-2 | > ΔY 且 | Yn-Yn-1 | ≤ ΔY )----仅当后两次差值<ΔY时,取本次
Y=(Yn+ Yn-1)/2------前、后两次差值均>ΔY,即当 |Yn-1-Yn-2|>ΔY 且 | Yn-Yn-1|>ΔY时,取该两次均值

特点: 保证了采样的实时性和连续性;但ΔY的确定不够灵活,必须根据现场的情况不断更换新值,且不能反映当采样点数N>3时各采样值受干扰的情况。

五、惯性滤波

原理: 惯性滤波(又称一阶滞后滤波)是模仿硬件RC低通滤波器的数字实现。

常用的RC滤波器的传递函数是:Y(s) / X(s) = 1 / (1+Tf·s) ------①

式①中,Tf是滤波器的滤波时间常数,其大小关系到滤波效果。一般来说,Tf越大,滤波器的截止频率(滤出的干扰频率)越低,滤出的电压波纹较小,但输出滞后较大。由于时间常数大以及高精度的RC电路不易制作,所以硬件RC不可能对极低频率的信号进行滤波。为此可以模仿硬件RC滤波器的特性参数,用软件做成低通滤波器,从而实现一阶惯性的数字滤波。

将①式写成差分方程形式:Tf · [y(k) - y(k-1)] / T + y(k) = x(k) ------②

将②式整理后,得到:y(k)= T/(T+Tf)·x(k) + Tf/(T+Tf)· y(k-1) ------③

令 α =T/(T+Tf),亦即:y(k) = α·x(k) + (1-α)·y(k-1) ------④

式③中,x(k)为第k次采样的滤波输入值,即第k次采样值;y(k-1)为第k-1次采样的滤波输出值;y(k)为第k次采样的滤波输出值;α即T/(T+Tf)为滤波系数;Tf为滤波环节的时间常数;T为采样周期。一般当T远小于Tf即α远小于1时,本次的有效采样值(滤波输出值)主要取决于上次的有效采样值(滤波输出值),而本次的采样值(滤波输入值)仅起到一点修正作用。假定采样周期T足够小,则有
α ≈ T/Tf ,滤波算法的截止频率为:f = 1/(2·Π·RC) = α/(2·Π·T) ----⑤

式④中,f 为截止频率,Π为圆周率,RC为电路分析中常见的的阻容参数,T为采样周期。当采样周期 T一定时,滤波系数 α 越小,数字滤波器的截止频率 f 就越低。

特点: 模拟了具有惯性的RC滤波器,对频率较低随机变化的信号滤波效果很好;但不能滤除高于1/2采样频率的干扰信号。

六、复合滤波

为了进一步提高滤波效果,有时可以把2种或2种以上不同功能的数字滤波器组合起来,组成复合数字滤波器,或称多级数字滤波器。
例如防脉冲干扰平均值滤波就是一种应用实例,由于这种滤波方法兼顾了中值滤波和算术平均值滤波的优点,所以无论对缓慢变化的信号,还是对快速变化的信号,都能获得较好的滤波效果。
再如对高频和低频部分都需要滤波的信号,就可以用复合滤波;也可采用双重滤波的方法,即把采样值经过低通滤波后,再经过一次高通滤波。这样,结果更接近理想值,这实际上相当于多级RC滤波器。

附、常用的排序方法

  1. 冒泡排序法
    https://www.cnblogs.com/Xloading/p/12003652.html
  2. 选择排序法
    https://blog.csdn.net/changhangshi/article/details/82740541
1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 3、算术平均滤波法 A、方法: 连续取N个采样值进行算术平均运算 N值较大时:信号平滑度较高,但灵敏度较低 N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4 B、优点: 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) A、方法: 把连续取N个采样值看成一个队列 队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点: 对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统 C、缺点: 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比较浪费RAM 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法: 相当于“中位值滤波法”+“算术平均滤波法” 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个数据的算术平均值 N值的选取:3~14 B、优点: 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 C、缺点: 测量速度较慢,和算术平均滤波法一样 比较浪费RAM 6、限幅平均滤波法 A、方法: 相当于“限幅滤波法”+“递推平均滤波法” 每次采样到的新数据先进行限幅处理, 再送入队列进行递推平均滤波处理 B、优点: 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 C、缺点: 比较浪费RAM 7、一阶滞后滤波法 A、方法: 取a=0~1 本次滤波结果=(1-a)*本次采样值+a*上次滤波结果 B、优点: 对周期性干扰具有良好的抑制作用 适用于波动频率较高的场合 C、缺点: 相位滞后,灵敏度低 滞后程度取决于a值大小 不能消除滤波频率高于采样频率的1/2的干扰信号 8、加权递推平均滤波法 A、方法: 是对递推平均滤波法的改进,即不同时刻的数据加以不同的权 通常是,越接近现时刻的数据,权取得越大。 给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低 B、优点: 适用于有较大纯滞后时间常数的对象 和采样周期较短的系统 C、缺点: 对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号 不能迅速反应系统当前所受干扰的严重程度,滤波效果差 9、消抖滤波法 A、方法: 设置一个滤波计数器 将每次采样值与当前有效值比较: 如果采样值=当前有效值,则计数器清零 如果采样值当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出) 如果计数器溢出,则将本次值替换当前有效值,并清计数器 B、优点: 对于变化缓慢的被测参数有较好的滤波效果, 可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动 C、缺点: 对于快速变化的参数不宜 如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统 10、限幅消抖滤波法 A、方法: 相当于“限幅滤波法”+“消抖滤波法” 先限幅,后消抖 B、优点: 继承了“限幅”和“消抖”的优点 改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统 C、缺点: 对于快速变化的参数不宜
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大胜s

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

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

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

打赏作者

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

抵扣说明:

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

余额充值