中位值平均滤波
1、方法
-
采样N个值,去掉最大最小
-
计算N-2的平均值
-
N= 3~14
2、优缺点
-
融合了中位值,平均值的优点
-
消除脉冲干扰
-
计算速度慢,RAM占用大
3.代码
char filter()
{
char count,i,j;
char Value_buf[N];
int sum=0;
for(count=0;count<N;count++)
Value_buf[count]= get_ad();
for(j=0;j<(N-1);j++)
for(i=0;i<(N-j);i++)
if(Value_buf[i]>Value_buf[i+1])
{
temp = Value_buf[i];
Value_buf[i]= Value_buf[i+1];
Value_buf[i+1]=temp;
}
for(count =1;count<N-1;count++)
sum += Value_buf[count];
return (char)(sum/(N-2));
}
4.移植代码到其他芯片
/*******************************************************************************
* Function Name:GetAverADCValue()
* Description :
* Arguments : None
* Return Value : None
*******************************************************************************/
void GetAverADCValue(uint16_t *ADCValue)
{
char count,i,j;
char Value_buf[SampNum];
uint16_t temp;
int sum=0;
for(count=0;count<SampNum;count++)
Value_buf[count]= *ADCValue++;
for(j=0;j<(SampNum-1);j++)
for(i=0;i<(SampNum-j);i++)
if(Value_buf[i]>Value_buf[i+1])
{
temp = Value_buf[i];
Value_buf[i]= Value_buf[i+1];
Value_buf[i+1]=temp;
}
for(count =1;count<SampNum-1;count++)
sum += Value_buf[count];
return sum/(SampNum-2);
}