正态分布滤波

 滤波前:波动范围(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);
}

猜你喜欢

转载自blog.csdn.net/wu58430/article/details/118876470