打印
[文档下载]

一阶低通滤波

[复制链接]
314|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jonas222|  楼主 | 2024-12-22 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、算法介绍

一阶滤波算法是比较常用的滤波算法:

Y(n)=a*X(n)+(1-a)*Y(n-1)

其中,X为输入值,Y为滤波后得输出值,a为0~1之间的滤波系数。一阶滤波相当于是将新的采样值与上次的滤波结果计算一个加权平均值。a的取值决定了算法的灵敏度,a越大,新采集的值占的权重越大,算法越灵敏,但平顺性差;相反,a越小,新采集的值占的权重越小,灵敏度差,但平顺性好。

2、C语言实现方法。
公式:        Y(n)=a*X(n)+(1-a)*Y(n-1)整理后得:Y(n)=Y(n-1)+a*(X(n)-Y(n-1))
       
float low_pass_filter(float value)       
{       
  static float out_last = 0; //上一次滤波值       
  float out;       
       
  /***************** 如果第一次进入,则给 out_last 赋值 ******************/       
  static char fisrt_flag = 1;       
  if (fisrt_flag == 1)       
  {       
    fisrt_flag = 0;       
    out_last = value;       
  }       
       
  /*************************** 一阶滤波 *********************************/       

3、效果如下图。
Y(n)=a*X(n)+(1-a)*Y(n-1)
原始曲线:

滤波系数0.05



使用特权

评论回复
沙发
lemonboard| | 2024-12-23 14:12 | 只看该作者
虽然帖子没有全部显示出来,但感觉使用了float类型之后,是不是普通的MCU就不能胜任了啊

使用特权

评论回复
板凳
LOVEEVER| | 2024-12-28 18:20 | 只看该作者
一阶滤波算法是比较常用的滤波算法

使用特权

评论回复
地板
小小蚂蚁举千斤| | 2024-12-29 19:11 | 只看该作者
学习一下低通滤波

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

1432

帖子

0

粉丝