种简单的数字滤波算法C语言源程序.doc

上传人:wj 文档编号:7395696 上传时间:2023-05-11 格式:DOC 页数:4 大小:24.50KB
下载 相关 举报
种简单的数字滤波算法C语言源程序.doc_第1页
第1页 / 共4页
种简单的数字滤波算法C语言源程序.doc_第2页
第2页 / 共4页
种简单的数字滤波算法C语言源程序.doc_第3页
第3页 / 共4页
种简单的数字滤波算法C语言源程序.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

种简单的数字滤波算法C语言源程序.doc

《种简单的数字滤波算法C语言源程序.doc》由会员分享,可在线阅读,更多相关《种简单的数字滤波算法C语言源程序.doc(4页珍藏版)》请在冰点文库上搜索。

种简单的数字滤波算法C语言源程序.doc

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

1、限副滤波

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

   value为有效值,new_value为当前采样值  

   滤波程序返回有效的实际值 */

#defineA10

charvalue;

charfilter()

{

  char new_value;

  new_value=get_ad();

  if((new_value-value>A)||(value-new_value>A)

     returnvalue;

  returnnew_value;

}

2、中位值滤波法

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

   排序采用冒泡法*/

#defineN 11

charfilter()

{

  charvalue_buf[N];

  charcount,i,j,temp;

  for(count=0;count

  {

     value_buf[count]=get_ad();

     delay();

  }

  for(j=0;j

  {

     for(i=0;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;

        }

     }

  }

  returnvalue_buf[(N-1)/2];

}     

3、算术平均滤波法

/*

*/

#defineN12

charfilter()

{

  int sum=0;

  for(count=0;count

  {

     sum+=get_ad();

     delay();

  }

  return(char)(sum/N);

}

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

/*

*/

#defineN12 

charvalue_buf[N];

chari=0;

charfilter()

{

  charcount;

  int sum=0;

  value_buf[i++]=get_ad();

  if(i==N)  i=0;

  for(count=0;count

     sum=value_buf[count];

  return(char)(sum/N);

}

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

/*

*/

#defineN12

charfilter()

{

  charcount,i,j;

  charvalue_buf[N];

  int sum=0;

  for (count=0;count

  {

     value_buf[count]=get_ad();

     delay();

  }

  for(j=0;j

  {

     for(i=0;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

     sum+=value[count];

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

}

6、限幅平均滤波法

/*

*/  

略参考子程序1、3

7、一阶滞后滤波法

/*为加快程序处理速度假定基数为100,a=0~100*/

#definea50

charvalue;

charfilter()

{

  char new_value;

  new_value=get_ad();

  return(100-a)*value+a*new_value; 

}

8、加权递推平均滤波法

/*coe数组为加权系数表,存在程序存储区。

*/

#defineN12

charcodecoe[N]={1,2,3,4,5,6,7,8,9,10,11,12};

charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;

charfilter()

{

  charcount;

  charvalue_buf[N];

  int sum=0;

  for(count=0,count

  {

     value_buf[count]=get_ad();

     delay();

  }

  for(count=0,count

     sum+=value_buf[count]*coe[count];

  return(char)(sum/sum_coe);

}

9、消抖滤波法

#defineN12

charfilter()

{

  charcount=0;

  charnew_value;

  new_value=get_ad();

  while(value!

=new_value);

  {

     count++;

     if(count>=N)  returnnew_value;

      delay();

     new_value=get_ad();

  }

  returnvalue;    

}

10、限幅消抖滤波法

/*

*/

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2