zoukankan      html  css  js  c++  java
  • 一阶滤波算法

    1. 一阶滤波算法的原理 

      一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 

      一阶低通滤波的算法公式为:

                  Y(n)=αX(n) + (1-α)Y(n-1) 

      式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。 一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。

    fL=a/2Pit pi为圆周率3.14… fL为采样频率

       式中 a——滤波系数;

    , t——采样间隔时间;

    例如:当t=0.5s(即每秒2次),a=1/32时;

    fL=(1/32)/(2*3.14*0.5)=0.01Hz

    2. 一阶滤波算法的程序(适用于单个采样)

     
    #define a   0.01                // 滤波系数a(0-1) 
    
    char filter(void)
    {
        baroOffset  = get_ad(); 
        baro = a * baroOffset  + (1.0f - a) * baroAlt;
        baroAlt = baro;
        return baro;  
    }
     

    3. 一阶滤波算法的不足 

       滤波系数越小,滤波结果越平稳,但是灵敏度越低;滤波系数越大,灵敏度越高,但是滤波结果越不稳定。

      一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:当数据快速变化时,滤波结果能及时跟进(灵敏度优先);当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。

  • 相关阅读:
    HTTP协议详解
    【VC++开发实战】迅雷晒密及批量查询流量程序
    C/C++中指针和引用之相关问题研究
    C++类中拷贝构造函数详解
    构造函数为什么不能是虚函数
    High一下!
    文件搜索神器everything 你不知道的技巧总结
    不要被C++“自动生成”所蒙骗
    对象的传值与返回
    深入浅出Node.js (3)
  • 原文地址:https://www.cnblogs.com/huangyangquan/p/10942838.html
Copyright © 2011-2022 走看看