滑动滤波算法和滑动滤波算法(程序判决滤波算法)一阶延迟算法滤波仿真低通滤波器
滑动过滤算法(程序判定过滤算法) )
害怕的斑马简单地通过编程处理输入数据In_data,对相邻的两次数据取误差的绝对值|error|,从而两次3358www.Sina.com/根据经验判断的最大允许误差In_data大于pre_error时,将此次的|error|视为偶然的误差值举个简单的例子。
pre_error
6:0087336000108:00179336000301033600024//极限滤波算法last _ data=0while true 3360 in _ data=input (enput () enput ) en put ) ) enpudata error=ABS(error ) 规定了两次数据误差值必须小于10print(last_data ) else:print(in_data ) last_data=in_data floatlimit_filter(floatin_data,float Last_data,float pre _ error error=in _ data-last _ data; //误差if(error0) error=-error; //绝对值if(errorpre_error ) return Last_data; else return In_data; }显然9:00的数据突变不正常。In_data
实际筛选数据In_data
可见,蓝色突变部分通过算法去除,但该滤波方式的输出曲线不光滑,完全无助于具有http://www.Sina.com/3358 www.Sina.com /的噪声。每天的温度变化曲线
可以过滤蓝色是未滤波的值;橙色是滤波以后的值。数据,使数据曲线变得平滑。蓝色是未滤波的值;红色是滤波以后的值。
要有效使用该算法,必须对数据熟悉程度高,并且能够估计正常状态下的突变量。小幅度
一阶滞后算法滤波
这是在电子学中学习的低通滤波器out=inxcxcrout=in *\frac { xc } { xcr } out=inxc rxc
O U T I N=X c
                    X                               c                               +                               R                                                 \frac{OUT}{IN}=\frac{Xc}{Xc+R}                  INOUT=Xc+RXc
                                    X                         c                         =                                   1                                       2                               π                               f                               c                                                 Xc=\frac{1}{2πfc}                  Xc=2πfc1
IN为高频信号时,                              X                      c                          Xc               Xc 可视为                              0                          0               0,所以IN的全部分压到                              R                          R               R上,OUT端电压近似为                              0                          0               0,有效去除了高频信号。
 IN为低频信号时,                              X                      c                          Xc               Xc>>                              R                          R               R,IN端分压绝大部分都在                              X                      c                          Xc               Xc上,OUT端可读取基本完整的IN端信号。
 这基本就是硬件低通滤波器的原理,把                              X                      c                          Xc               Xc与                              R                          R               R互换位置便可组成高通滤波器。
程序模拟低通滤波
假设我们观测一个稳压输出12V的信号,采样频率10ms;
0ms12V10ms19V20ms6V30ms21V40ms15V50ms9V
在10ms的采样频率下,信号跳变很频繁,我们如果利用这个电压信号作为系统输入值,很明显输出值同样也是跳变严重。
 我们可以用相邻两次的采样信号通过加权处理得到更加平滑的信号曲线。
O U T = I N ∗ α + ( 1 − α ) ∗ L a s t _ o u t OUT=IN*\alpha+(1-\alpha)*Last\_out OUT=IN∗α+(1−α)∗Last_out
算法低通滤波的主体是                              (                      1                      −                      α                      )                      ∗                      L                      a                      s                      t                      _                      o                      u                      t                          (1-\alpha)*Last\_out               (1−α)∗Last_out
                               I                      N                      ∗                      α                          IN*\alpha               IN∗α只是达到对数据修正的作用,所以数据会有滞后性。
 原来每次的采样信号是分立开的,互不相关,通过加权处理,利用上次滤波输出信号                                    L                         a                         s                         t                         _                         o                         u                         t                              Last\_out                  Last_out 通过加权处理来抑制本次信号突变。
pit=a*pitch+(1-a)*last_data;//加权滤波,抑制高频信号 last_data=pit;
 蓝色是未滤波的值;红色是滤波以后的值。
 明显可以看到蓝色高频部分被有效抑制,滤波后的曲线也更加平滑,可以让系统输出更加稳定。
 优点
 滤除高频信号,使信号曲线更加平滑。
 缺点
 仅适用于采样频率较高的系统,信号滞后,实时性差,不利于健壮的便当信号的处理。无法完美地兼顾灵敏度和平稳度。
MPU6050加速度、角速度的解算以及互补滤波使用

