[文档下载] 一阶低通滤波

[复制链接]
825|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语言实现方法。
  1. 公式:        Y(n)=a*X(n)+(1-a)*Y(n-1)整理后得:Y(n)=Y(n-1)+a*(X(n)-Y(n-1))
  2.        
  3. float low_pass_filter(float value)       
  4. {       
  5.   static float out_last = 0; //上一次滤波值       
  6.   float out;       
  7.        
  8.   /***************** 如果第一次进入,则给 out_last 赋值 ******************/       
  9.   static char fisrt_flag = 1;       
  10.   if (fisrt_flag == 1)       
  11.   {       
  12.     fisrt_flag = 0;       
  13.     out_last = value;       
  14.   }       
  15.        
  16.   /*************************** 一阶滤波 *********************************/       

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 | 显示全部楼层
学习一下低通滤波
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

1687

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部