欢迎来到天天文库
浏览记录
ID:30262728
大小:269.05 KB
页数:24页
时间:2018-12-28
《种简单的数字滤波算法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、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)
2、
3、(value-new_value>A) returnvalue;
4、 returnnew_value;}2、中位值滤波法/* N值可根据实际情况调整 排序采用冒泡法*/#defineN 11charfilter(){ charvalue_buf[N]; charcount,i,j,temp; for(count=0;count5、>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;count6、_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;count7、波法(又称防脉冲干扰平均滤波法)/**/#defineN12charfilter(){ charcount,i,j; charvalue_buf[N]; int sum=0; for (count=0;countvalue_buf[i+1]) {8、 temp=value_buf[i]; value_buf[i]=value_buf[i+1]; value_buf[i+1]=temp; } } } for(count=1;count9、50charvalue;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_buf10、[N]; int sum=0; for(count=0,count
5、>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;count6、_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;count7、波法(又称防脉冲干扰平均滤波法)/**/#defineN12charfilter(){ charcount,i,j; charvalue_buf[N]; int sum=0; for (count=0;countvalue_buf[i+1]) {8、 temp=value_buf[i]; value_buf[i]=value_buf[i+1]; value_buf[i+1]=temp; } } } for(count=1;count9、50charvalue;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_buf10、[N]; int sum=0; for(count=0,count
6、_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;count7、波法(又称防脉冲干扰平均滤波法)/**/#defineN12charfilter(){ charcount,i,j; charvalue_buf[N]; int sum=0; for (count=0;countvalue_buf[i+1]) {8、 temp=value_buf[i]; value_buf[i]=value_buf[i+1]; value_buf[i+1]=temp; } } } for(count=1;count9、50charvalue;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_buf10、[N]; int sum=0; for(count=0,count
7、波法(又称防脉冲干扰平均滤波法)/**/#defineN12charfilter(){ charcount,i,j; charvalue_buf[N]; int sum=0; for (count=0;countvalue_buf[i+1]) {
8、 temp=value_buf[i]; value_buf[i]=value_buf[i+1]; value_buf[i+1]=temp; } } } for(count=1;count9、50charvalue;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_buf10、[N]; int sum=0; for(count=0,count
9、50charvalue;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
10、[N]; int sum=0; for(count=0,count
此文档下载收益归作者所有