1 / 22
文档名称:

种简单的数字滤波算法.doc

格式:doc   大小:208KB   页数:22页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

种简单的数字滤波算法.doc

上传人:雾里看花 2019/4/8 文件大小:208 KB

下载得到文件列表

种简单的数字滤波算法.doc

相关文档

文档介绍

文档介绍:10种简单的数字滤波算法(C语言源程序>假定从8位AD中读取数据<如果是更高位的AD可定义数据类型为int),子程序为get_ad(>。 1、限副滤波/* A值可根据实际情况调整   value为有效值,new_value为当前采样值     滤波程序返回有效的实际值 */#defineA10charvalue。charfilter(>{  char new_value。  new_value=get_ad(>。  if((new_value-value>A>||(value-new_value>A>     returnvalue。  returnnew_value。}2、中位值滤波法/* N值可根据实际情况调整   排序采用冒泡法*/#defineN 11charfilter(>{  charvalue_buf[N]。  charcount,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。        }     }  }  returnvalue_buf[(N-1>/2]。}     3、算术平均滤波法/**/#defineN12charfilter(>{  int sum=0。  for(count=0。count<N。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<N,count++>     sum=value_buf[count]。  return(char>(sum/N>。}5、中位值平均滤波法<又称防脉冲干扰平均滤波法)/**/#defineN12charfilter(>{  charcount,i,j。  charvalue_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>>。}6、限幅平均滤波法/**/  略参考子程序1、37、一阶滞后滤波法/*为加快程序处理速度假定基数为100,a=0~100*/#definea50charvalue。charfilter(>{  char new_value。  new_value=get_ad(>。  return(100-a>*value+a*new_value。 }8、加权递推平均滤波法/*coe数组为加权系数表,存在程序存储区。*/#defineN12charcodecoe[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<N。count++>  {     value_buf[count]=get_ad(>。     delay(>。  }  for(c