软件算法实现数字滤波(单片机)


本文主要内容取自VX公众号《嵌入式ARM》4月24日文章,修改了部分代码,括号内为个人阅读所做的注释。

问题:

进行数据采集时,由于随机干扰引起误差。特点是在相同条件下测量同一量,大小和符号出现无规则变化而无法预测,但多次测量的结果符合统计规律。

解决方法:

硬件上使用滤波技术,软件使用软件算法实现数字滤波。

(滤波算法是系统测控算法的重要组成部分,实时性较强)

数字滤波算法优点:

1.无需其他硬件成本,可靠性高,不存在阻抗匹配问题,数字滤波可对频率很低的信号进行滤波(模拟滤波器做不到)

2.多输入通道可共用一个滤波程序,降低系统开支

3.适当改变滤波器程序或运算,就可以改变滤波特性,对滤除低频干扰和随机信号有较大效果

4.常见滤波算法有:限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波法

限幅滤波算法:

原理描述:

​ 该运算过程中将两次采样值相减,求出增量;再将增量的绝对值 与 两次采样允许的最大差值A进行比较;

​ 如果小于等于被允许的最大差值,则本次采样有效,否则取上次采样值作为本次数据样本;

​ A的值由被测对象具体情况而定(经验或实验数据)。

适用场景:

主要用于处理变化较为缓慢的数据,如温蒂、物体位置等(应该还有变化幅度确定)。

参考代码:

 #define A //允许的最大差值
 char data; //上一次的数据
 
 char filter(char data , char datenew)
 {
    if((datanew - data) > A || (data - datanew > A))
        return data;
    else
		return datanew;
}

中值滤波算法:

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值