滤波前:波动范围(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);
}
本文介绍了一种通过计算平均值和标准差来实现数据滤波的方法,显著提高了数据的稳定性,波动范围从190减少到20,稳定性提升9.5倍。文中详细介绍了平均值、标准差及判断异常点的具体算法。
3812

被折叠的 条评论
为什么被折叠?



