当前位置:首页 >> 信息与通信 >>

莱特准则 or 格拉布斯准则


// datastat.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "math.h" int main(int argc, char* argv[]) {

double data[1

5]={21.35,20.36,20.37,20.34,20.31,20.2,20.32,20.4,20.33,20.38,20.36,20.29,20.40,20.41,20 .95};//数据 double data_b[50]; double baddata[50]; double remanet[50];//残差 double g95[]={1.15,1.46,1.67,1.82,1.94,2.03,2.11,2.18,2.23,2.29,2.33,2.37,2.41,2.44,2.47,2.50,2.53,2.56} ; double g99[]={1.15,1.49,1.75,1.94,2.10,2.22,2.32,2.41,2.48,2.55,2.61,2.66,2.70,2.74,2.78,2.82,2.85,2.85} ; double std;//标准差 double delta;//极限误差 double sum;//累加临时存储 double average;//平均值 double rule; int badnum=0; int badindex; int validNum=0; int proIndex=0; int level=0; int datanum; printf("======================= 欢 迎 使 用 等 精 度 测 量 数 据 处 理 程 序 =======================\n"); //使用用户输入的数据 printf("Please input the number of data(8-20):\n"); scanf("%d",&datanum);//读入数据个数 printf("Please input data:\n");

/*

for(int j=0;j<datanum;j++) scanf("%lf",&data[j]);//读入数据 */ //使用测试程序的数据 datanum=15;

//选择剔除准则:莱特准则 or 格拉布斯准则 printf("Please select the rule:"); printf(" [Press 1 for Laite.||"); printf("Press 2 for Grubs.]\n"); scanf("%lf",&rule); if(rule==1) rule=3; else { printf("Please select the level of Grubs: [1 for 0.01% || 2 for 0.05%].\n"); scanf("%d",&level); }

do { if(level==1) rule=g99[datanum-3]; if(level==2) rule=g95[datanum-3]; proIndex++; printf("\n****************It's the %d times to cal.****************\n",proIndex); sum=0; for(int i=0;i<datanum;i++) sum+=data[i]; average=sum/datanum;//计算平均值 printf("Your data are:\n"); sum=0; for(i=0;i<datanum;i++)

{ printf("%8.3f",data[i]); remanet[i]=data[i]-average;//计算残差 sum+=remanet[i]*remanet[i];//计算残差平方和 } printf("\nthe remanet error are:\n"); for(i=0;i<datanum;i++) printf("%8.3f",remanet[i]);

std=sqrt(sum/(datanum-1));//计算标准差 delta=rule*std;//计算极限误差 //输出相关信息 printf("\n\nThe average of your data is:%5.3f \n",average); printf("\nThe std is:%5.3f \n",std); printf("\nThe delta(limit error) is:%5.3f \n",delta); printf("\nThe rule is:%5.3f \n",rule); //剔除坏值 validNum=0; badindex=0; for(i=0;i<datanum;i++) if(fabs(remanet[i])>=delta&&delta!=0) { baddata[badnum+badindex++]=data[i]; badnum++; } else data_b[validNum++]=data[i]; for(i=0;i<validNum;i++) data[i]=data_b[i]; datanum=validNum; if(badindex==0) { printf("\nThere is no baddata in the %d times cal!!!\n",proIndex); break; } else { printf("\nYou have got baddata in the %d times cal!!!! \n",proIndex); printf("\nthe bad data is %8.3f.\n",baddata[badnum-1]);

} }while (1);

printf("\n************************Summary*************************\n"); //输出剩余数据 printf("the valid data are:\n"); for(int i=0;i<validNum;i++) printf("%8.3f",data_b[i]); //输出所有坏值 printf("\nthe bad data are:\n"); for(i=0;i<badnum;i++) printf("%8.3f\n",baddata[i]); delta=3*std/sqrt(datanum); printf("the report result is :\n"); printf("%8.3f±%5.3f\n",average,delta); printf("************************Summary*************************\n\n"); return 0; }


相关文章:
3120403069电信121周煜题目1
1 i ?1 (4)按莱特准则 vi ? 3s( x) , 或格拉布斯准则, 检查和剔除粗大误差。 若有粗大误差, 则应逐一剔除,然后重新计算 x 和 s,再判别,直到无粗大...
电子测量复习
莱特准则 肖维纳准则 格拉布斯准则 n ? 10, xi ? x ? 3? ?(X) xi ? x ? ch? ?(X) xi ? x ? g? ?(X) 消除或减弱系统误差的的典型测量技术:...
音频技术测量第一章总结报告
发现疏失误差的方法一般有莱 特准则和,格拉布斯准则,其中莱特准则是对于正态分布来说的,在测量中剩余 误差超过 3 倍的标准差的概率只有 0.27%如果发现剩余误差...
电子测量技术作业答案2
[不选全或者选错,不算完成] (A) 莱特准则 (B) 贝塞尔法 (C) 格拉布斯准则 (D) 极差法 你选择的答案: 未选择 [错误] 正确答案:B D 解答参考: 三、...
2011.11.16智能仪器考试复习资料1
解决方案:在测量次数比较多时,测量结果中得粗大误差宜采用莱特准则,次数不多,采用格拉布斯准则判断。 6.什么是数字滤波?数字滤波的特点.①数字滤波:通过一定的计算...
电子测量资料
将数据依次列成表格;②求出算术平均值 ③列出残差, 并验证 ④ 按贝塞尔公式计算标准偏差的估计值 ⑤按莱特准则 ,或格拉布斯准则检查和剔除粗大误差 ⑥判断有无系...
电子测量技术
[不选全或者选错,不算完成] (A) 莱特准则 (B) 贝塞尔法 (C) 格拉布斯准则 (D) 极差法 你选择的答案: B D [正确] 正确答案:B D 解答参考: 三、...
电测试题与答案2
——2 分 2、答: (1)莱特准则格拉布斯准则。 ——2 分(2)以莱特准则为例: ①根据测量数据计算出各次的残差ν 1、ν 2、……ν ②根据贝塞尔公式计算...
电子测量2
莱特准则 21. 格拉布斯准则 22. 系统误差分为 和 23. 应用 判据判断累进性系差,应用 判据判断周期性系差。 24. 消除或减弱系差的典型测量技术有 25. 计算:...
电子测量习题
2-16 对某电阻的 9 次测量值如下(单位 kΩ) 10.32,10.28,10.21,10.41,10.25,10.31,10.32,100.4 试用莱特准则格拉布斯准则(对应 99%的置信概率...
更多相关标签: