|
发表于 2017-2-24 10:30:19
|
显示全部楼层
中位值平均滤波法运算中有一处问题:
/********************************************
说明:采一组队列去掉最大值和最小值
优点:融合了两种滤波的优点。对于偶然出现的脉冲性干扰,可消
除有其引起的采样值偏差。对周期干扰有良好的抑制作用,
平滑度高,适于高频振荡的系统。
缺点:测量速度慢
*********************************************/
#define N 12
uchar filter()
{
unsigned char i,j,k,l;
unsigned char temp,sum=0,value;
unsigned char value_buf[N],;
for(i=0;i<N;i++)
{
value_buf = get_ad();
delay();
}
//采样值从小到大排列(冒泡法)
for(j=0;j<N-1;j++)
{
for(i=0;i<N-j;i++)
应该改成for(i=0;i<(N-1-j);i++)
{
if(value_buf>value_buf[i+1])
{
temp = value_buf;
value_buf = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
for(i=1;i<N-1;i++)
sum += value_buf;
value = sum/(N-2);
return(value);
} |
|