滤波前:波动范围(190)
滤波后:波动范围(55)
配合质心公式最终效果:波动范围(20)
稳定性最终提高9.5倍
double bei=2;
double average(int a[],int cnt);
double StandardDeviation(int a[],int cnt);
int judge_point(int a[],int cnt);
double StandardDeviation(int a[],int cnt)
{
double sum=0;
double ave=average(a,cnt);
for(int i=0;i<cnt;i++)
sum+=(1.0*a[i]-ave)*(a[i]-ave);
sum/=cnt;
return sqrt(sum);
}
double average(int a[],int cnt)
{
double sum=0;
for(int i=0;i<cnt;i++) sum+=1.0*a[i];
sum/=cnt;
return sum;
}
int judge_point(int a[],int cnt)
{
double ave=average(a,cnt);
double stand=StandardDeviation(a,cnt);
int cntt=cnt;
printf("%lf %lf\n",ave-bei*stand,ave+bei*stand);
for(int i=0;i<cnt;i++)
{
if(!(a[i]>ave-bei*stand&&a[i]<ave+bei*stand))
{
cntt--;
a[i]=0;
}
}
return average(a,cntt);
}