- 3
- 0
- 约1.79万字
- 约 27页
- 2017-05-29 发布于四川
- 举报
10种软件滤波方法?出处:网络?作者:未知?假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();1、限副滤波/*?nbspA值可根据实际情况调整????value为有效值,new_value为当前采样值??????滤波程序返回有效的实际值??*/#definenbspAnbsp10char?value;charnbspfilter(){??nbspchar?nbspnew_value;??nbspnew_value?=nbspget_ad();??nbspif?(?(nbspnew_valuenbsp-?value?nbspA?)?||?(?valuenbsp-nbspnew_value?nbspA?)?????nbspreturn?value;??nbspreturnnbspnew_value;?????????}2、中位值滤波法/*?nbspN值可根据实际情况调整????排序采用冒泡法*/#definenbspN?nbsp11charnbspfilter(){??nbspchar?value_buf[N];??nbspcharnbspcount,i,j,temp;??nbspfor?(nbspcount=0;countN;count++)???{??????value_buf[count]?=nbspget_ad();?????nbspdelay();???}??nbspfor?(j=0;jN-1;j++)???{?????nbspfor?(i=0;iN-j;i++)??????{????????nbspif?(?value_bufvalue_buf[i+1]?)?????????{???????????nbsptemp?=?value_buf;????????????value_buf?=?value_buf[i+1];??????????????value_buf[i+1]?=nbsptemp;?????????}??????}???}??nbspreturn?value_buf[(N-1)/2];}?????3、算术平均滤波法/**/#definenbspNnbsp12charnbspfilter(){??nbspint?nbspsum?=nbsp0;??nbspfor?(nbspcount=0;countN;count++)???{?????nbspsum?+?=nbspget_ad();?????nbspdelay();???}??nbspreturn?(char)(sum/N);}4、递推平均滤波法(又称滑动平均滤波法)/**/#definenbspNnbsp12?char?value_buf[N];charnbspi=0;charnbspfilter(){??nbspcharnbspcount;??nbspint?nbspsum=0;???value_buf[i++]?=nbspget_ad();??nbspif?(nbspi?==nbspN?)??nbspi?=nbsp0;??nbspfor?(nbspcount=0;countN,count++)?????nbspsum?=?value_buf[count];??nbspreturn?(char)(sum/N);}5、中位值平均滤波法(又称防脉冲干扰平均滤波法)/**/#definenbspNnbsp12charnbspfilter(){??nbspcharnbspcount,i,j;??nbspchar?value_buf[N];??nbspint?nbspsum=0;??nbspfor??(count=0;countN;count++)???{??????value_buf[count]?=nbspget_ad();?????nbspdelay();???}??nbspfor?(j=0;jN-1;j++)???{?????nbspfor?(i=0;iN-j;i++)??????{????????nbspif?(?value_bufvalue_buf[i+1]?)?????????{???????????nbsptemp?=?value_buf;????????????value_buf?=?value_buf[i+1];??????????????value_buf[i+1]?=nbsptemp;?????????}??????}???}??nbspfor(count=1;count
原创力文档

文档评论(0)