十种软件滤波的算法
软件滤波在嵌入式的数据采集和处理中有着很重要的作用,这 10 种方法各有优劣,根据自
己的需要选择
。同时提供了 C 语言的参考代码,希望对各位能有帮助。
1、限幅滤波法(又称程序判断滤波法)
A、方法:
根据经验判断,确定两次采样允许的最大偏差值(设为 A)
每次检测到新值时判断:
如果本次值与上次值之差<=A,则本次值有效
如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
B、优点:
能有效克服因偶然因素引起的脉冲干扰
C、缺点
无法抑制那种周期性的干扰
平滑度差
/* A 值可根据实际情况调整 value 为有效值,new_value 为当前采样值 滤波程序返回有
效的实
际值 */
#define A 10
char value;
char filter()
{
char new_value;
new_value =get_ad();
if ( ( new_value - value > A ) || ( value- new_value > A )
return value;
returnnew_value;
}
2、中位值滤波法
A、方法:
连续采样 N 次(N 取奇数)
把 N 次采样值按大小排列
取中间值为本次有效值
B、优点:
能有效克服因偶然因素引起的波动干扰
对温度、液位的变化缓慢的被测参数有良好的滤波效果
C、缺点:
对流量、速度等快速变化的参数不宜
评论1
最新资源