版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiao2yizhizai/article/details/51026151
1.限幅滤波算法(程序判断滤波算法)
方法解析:
根据经验判断,确定两次采样允许的最大偏差值(设定为A),每次检测到新值时判断:
如果本次值与上次值之差<=A,则本次值有效,
如果本次值与上次值只差>A,则本次值无效,放弃本次值,用上次值代替本次值。
优点:
能有效克服因偶然因素引起的脉冲干扰
缺点:
无法抑制那种周期性的干扰,平滑度差
#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;
return new_value;
}
2.中位值滤波法
方法解析:
连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值
优点:
能有效克服因偶然因素引起的波动干扰,对温度,液位的变化缓慢的被测参数有良好的滤波效果
缺点:
对流量,速度等快速变化的参数不宜
#define N 11
char filter()
{
char value_buf[N];
char count,i,j,temp;
for ( count=0;count
{
value_buf[count] = get_ad();
delay();
}
for (j=0;j
{
for (i=