说明:
采一组队列去掉最大值和最小值
优点:
融合了两种滤波的优点。对于偶然出现的脉冲性干扰,可消除有其引起的采样值偏差。
对周期干扰有良好的抑制作用,平滑度高,适于高频振荡的系统。
#define N 12
char filter(void) {
char i = 0, j = 0, temp = 0;
char value_buf[N];
int sum = 0;
for(i = 0; i < N; i++){
value_buf[i] = get_ad();
delay();
}
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(i = 1; i < N - 1; i++) {
sum += value_buf[i];
}
return (char)(sum / (N - 2));
}
|