在AD采样中常用到软件滤波,现在一些常见的如中值滤波、均值滤波等,根据应用不同选取不同的滤波算法,有没有一种通用的滤波算法呢!本文提出一种通过统计相同值的个数,然后再取最大的个数的值来实现一种通用的滤波算法。
理论依据,在AD采样中,往往正确值的个数是最多的,所以只要找到个数最多的值就可以了,其他的大多都是干扰。
算法还需要完善!
/*
统计相同数的个数
*/
unsigned char a[]={64,55,87,55,87,69,87,87,64,87,45,87,56,76};
unsigned char Midvalue;
unsigned char counter[14],countdata[14];//counter统计相同数的个数,countdata存相同数的值
main()
{
unsigned char i,j,temp,m,k,Eque;
for(i=0;i<11;i++)
{
for(j=0;j<i;j++)
{
if(a<a[j])
{
temp=a;
a=a[j];
a[j]=temp;
}
}
}
Midvalue=a[5];
if(Midvalue<=25)
{
for(i=0;i<Midvalue+25;i++)
{
for(m=0;m<14;m++)
{
if(a[m]==i) counter[m]++;
}
}
}
else
{
for(m=0;m<14;m++)counter[m]=0;
for(i=Midvalue-25;i<Midvalue+25;i++)
{
for(m=0;m<14;m++)
{
if(a[m]==i)
{
counter[k]++;
countdata[k]=i;
Eque=1;
}
}
if(Eque)
{
Eque=0;
k++;
}
}
}
while(1);
}
文章评论(0条评论)
登录后参与讨论