欢迎来到天天文库
浏览记录
ID:12359695
大小:51.00 KB
页数:5页
时间:2018-07-16
《10种软件滤波方法的示例程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、10种软件滤波方法的示例程序假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();1、限副滤波1/*A值可根据实际情况调整2value为有效值,new_value为当前采样值3滤波程序返回有效的实际值*/4#defineA1056charvalue;78charfilter()9{10charnew_value;11new_value=get_ad();12if((new_value-value>A)
2、
3、(value-new_value>A)13returnvalue;14
4、returnnew_value;1516}复制代码2、中位值滤波法17/*N值可根据实际情况调整18排序采用冒泡法*/19#defineN112021charfilter()22{23charvalue_buf[N];24charcount,i,j,temp;25for(count=0;count5、[i]>value_buf[i+1])5{6temp=value_buf[i];7value_buf[i]=value_buf[i+1];8value_buf[i+1]=temp;9}10}11}12returnvalue_buf[(N-1)/2];13}复制代码3、算术平均滤波法14#defineN121516charfilter()17{18intsum=0;19for(count=0;count6、sum/N);25}复制代码4、递推平均滤波法(又称滑动平均滤波法)26#defineN122728charvalue_buf[N];29chari=0;301charfilter()2{3charcount;4intsum=0;5value_buf[i++]=get_ad();6if(i==N)i=0;7for(count=0;count7、efineN121213charfilter()14{15charcount,i,j;16charvalue_buf[N];17intsum=0;18for(count=0;countvalue_buf[i+1])28{29temp=value_buf[i];30value_buf8、[i]=value_buf[i+1];31value_buf[i+1]=temp;32}33}1}2for(count=1;count9、et_ad();16return(100-a)*value+a*new_value;17}复制代码8、加权递推平均滤波法18/*coe数组为加权系数表,存在程序存储区。*/1920#defineN122122charcodecoe[N]={1,2,3,4,5,6,7,8,9,10,11,12};23charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;2425charfilter()26{27charcount;28charvalue_buf[N];1intsum=0;2for(co10、unt=0,count
5、[i]>value_buf[i+1])5{6temp=value_buf[i];7value_buf[i]=value_buf[i+1];8value_buf[i+1]=temp;9}10}11}12returnvalue_buf[(N-1)/2];13}复制代码3、算术平均滤波法14#defineN121516charfilter()17{18intsum=0;19for(count=0;count6、sum/N);25}复制代码4、递推平均滤波法(又称滑动平均滤波法)26#defineN122728charvalue_buf[N];29chari=0;301charfilter()2{3charcount;4intsum=0;5value_buf[i++]=get_ad();6if(i==N)i=0;7for(count=0;count7、efineN121213charfilter()14{15charcount,i,j;16charvalue_buf[N];17intsum=0;18for(count=0;countvalue_buf[i+1])28{29temp=value_buf[i];30value_buf8、[i]=value_buf[i+1];31value_buf[i+1]=temp;32}33}1}2for(count=1;count9、et_ad();16return(100-a)*value+a*new_value;17}复制代码8、加权递推平均滤波法18/*coe数组为加权系数表,存在程序存储区。*/1920#defineN122122charcodecoe[N]={1,2,3,4,5,6,7,8,9,10,11,12};23charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;2425charfilter()26{27charcount;28charvalue_buf[N];1intsum=0;2for(co10、unt=0,count
6、sum/N);25}复制代码4、递推平均滤波法(又称滑动平均滤波法)26#defineN122728charvalue_buf[N];29chari=0;301charfilter()2{3charcount;4intsum=0;5value_buf[i++]=get_ad();6if(i==N)i=0;7for(count=0;count7、efineN121213charfilter()14{15charcount,i,j;16charvalue_buf[N];17intsum=0;18for(count=0;countvalue_buf[i+1])28{29temp=value_buf[i];30value_buf8、[i]=value_buf[i+1];31value_buf[i+1]=temp;32}33}1}2for(count=1;count9、et_ad();16return(100-a)*value+a*new_value;17}复制代码8、加权递推平均滤波法18/*coe数组为加权系数表,存在程序存储区。*/1920#defineN122122charcodecoe[N]={1,2,3,4,5,6,7,8,9,10,11,12};23charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;2425charfilter()26{27charcount;28charvalue_buf[N];1intsum=0;2for(co10、unt=0,count
7、efineN121213charfilter()14{15charcount,i,j;16charvalue_buf[N];17intsum=0;18for(count=0;countvalue_buf[i+1])28{29temp=value_buf[i];30value_buf
8、[i]=value_buf[i+1];31value_buf[i+1]=temp;32}33}1}2for(count=1;count9、et_ad();16return(100-a)*value+a*new_value;17}复制代码8、加权递推平均滤波法18/*coe数组为加权系数表,存在程序存储区。*/1920#defineN122122charcodecoe[N]={1,2,3,4,5,6,7,8,9,10,11,12};23charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;2425charfilter()26{27charcount;28charvalue_buf[N];1intsum=0;2for(co10、unt=0,count
9、et_ad();16return(100-a)*value+a*new_value;17}复制代码8、加权递推平均滤波法18/*coe数组为加权系数表,存在程序存储区。*/1920#defineN122122charcodecoe[N]={1,2,3,4,5,6,7,8,9,10,11,12};23charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;2425charfilter()26{27charcount;28charvalue_buf[N];1intsum=0;2for(co
10、unt=0,count
此文档下载收益归作者所有