一阶低通滤波算法

Posted 不会飞的小肥鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一阶低通滤波算法相关的知识,希望对你有一定的参考价值。

1. 一阶滤波算法的原理 

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

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

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

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

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. 一阶滤波算法的不足 

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

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

以上是关于一阶低通滤波算法的主要内容,如果未能解决你的问题,请参考以下文章

滤波器学习

三阶低通滤波器的传递函数怎么求,在线等,谢谢!

一阶rc低通滤波器公式是啥?

新手求助,关于积分器与一阶RC低通滤波器

RC低通滤波器

c语言中值滤波问题?