C语言源程序的数字滤波算法介绍(九种)

假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();

1、限副滤波

C语言源程序的数字滤波算法介绍(九种)

2、中位值滤波法

/* N值可根据实际情况调整

排序采用冒泡法*/

#define N 11

char filter()

{

char value_buf[N];

char count,i,j,temp;

for ( count=0;count《N;count++)

{

value_buf[count] = 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;

}

}

}

return value_buf[(N-1)/2];

}

3、算术平均滤波法

C语言源程序的数字滤波算法介绍(九种)

4、递推平均滤波法(又称滑动平均滤波法)

C语言源程序的数字滤波算法介绍(九种)

5、中位值平均滤波法(又称防脉冲干扰平均滤波法)

/*

*/

#define N 12

char filter()

{

char count,i,j;

char value_buf[N];

int sum=0;

for (count=0;count《N;count++)

{

value_buf[count] = 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(count=1;count《N-1;count++)

sum += value[count];

return (char)(sum/(N-2));

}

  • C语言源程序的数字滤波算法介绍(九种)已关闭评论
    A+
发布日期:2019年07月14日  所属分类:参考设计