限幅与滞后滤波算法

限幅滤波算法(程序判断滤波算法)

顾名思义,就是单纯用程序来处理输入数据In_data,通过对相邻两次数据取误差的绝对值 |error|,通过经验判断两次In_data的最大允许误差pre_error,若 |error| 大于pre_error我们将本次In_data视为偶然误差值,输出数据仍为上次数据 In_data,举个简单的例子。

每天的温度变化曲线

6:008℃
7:0010℃
8:0017℃
9:0030℃
10:0024℃
// 限幅滤波算法
Last_data=0
while True:
    In_data=input()
    error=int(In_data)-int(Last_data)
    error=abs(error)
    if error>10:#规定两次数据误差值必须小于10
        print(Last_data)
    else:
        print(In_data)
        Last_data = In_data
/*
*限幅滤波
*入口参数:
*In_data:本次输入信号
*Last_data:上次滤波后的信号
*pre_error:允许的最大误差值
*
*/
float Limit_Filter(float In_data,float Last_data,float pre_error)
{
    float error=0;
    error=In_data-Last_data;//取误差
    if(error<0) error=-error;//绝对值
    if(error>pre_error)
        return Last_data;
    else
        return In_data;
}

很明显9:00的数据突变是不正常的。
蓝色是未滤波的值;橙色是滤波以后的值。
再看一组实际滤波数据
在这里插入图片描述
蓝色是未滤波的值;红色是滤波以后的值。
蓝色的突变部分通过算法被滤除,但是也可以看到这种滤波方式的输出曲线是不平滑的,而且对于小幅度带有周期性的干扰是完全没有作用的。
优点:
可以滤掉一些突变不正常数据,使数据曲线比较平滑。
缺点
必须要求对数据的熟悉程度较高,可推算出正常情况的突变量,才可以有效使用这种算法,对周期性、小幅度干扰没有效果

一阶滞后算法滤波

在这里插入图片描述
这是模电中学习的低通滤波器
O U T = I N ∗ X c X c + R OUT=IN*\frac{Xc}{Xc+R} 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;

0ms12V
10ms19V
20ms6V
30ms21V
40ms15V
50ms9V

在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加速度、角速度的解算以及互补滤波使用

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值