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

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

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

1、限副滤波

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

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语言源程序的数字滤波算法介绍(九种),C语言源程序的数字滤波算法介绍(九种),第3张

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

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

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));

}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2646557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存