对粗大误差和随机误差处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用matlab 对一组随机数据的随机误差的处理
当今社会,人们对测量和仪器的精确性要求越来越高,传统的测量精确度远远不能满足当今科技以及人们生活方面的要求,所以需要一种能够快速分析误差的方法出现。matlab 可以大大减少人工运算的成本,成本低,可行性高,而且具有普遍性,故采用matlab 来进行误差处理。
等精度测量粗大误差处理
粗大误差的判别准则
(1)莱以特准则(3σ准则)
具体方法:求出平均值和σ,将残差的绝对值与3σ进行比较,大于3σ的测量值都是坏值。这种方法称为 3σ法则(正态分布)。
适合测量点数较大的情况,计算所有的点。逐一剔除异常值
(2)罗曼诺夫斯基准则
具体方法:首先剔除一个可疑的测得值,然后按照t 分布检验被剔除的测量值是否含有粗大误差。如果是,剔除后,再判断其它的测试结果点。
适合条件:测量次数较少的情况,是逐一剔除的。
等精度测量随机误差处理
(1) 算数平均值
1
1==∑n i n i x x
大多数情况下,真值未知,用=-i i v x x 来代替误差:
σ==σ=s
δ=-i i x x n :测量次数
(2)测量列算数平均值标准差
/σσ=x (3)算数平均值的极限误差:
,δδσ=
=t t
lim δσ=±x t t 为置信系数,通过查表可得。
|()d x x |K n -2,a σ
-≥1,1=-1n i i i d x x n =≠∑
结果表示: lim δ=±X x t x
(4
(5
软件流程设计
等精度测量计算流程
开始 读取数据文件
matlab程序
clc;
clear;
data=load('test.txt'); %
v_2=0; %定义残差的平方
average_data=0; %定义数据的平均值
average_data=mean(data);%计算平均值
if(length(data)<10) %判断数据的长度,用罗曼诺夫斯基准则剔除粗大误差
while(1)
for i=1:length(data) %计算残差和残差的平方和
v(i)=data(i)-average_data;
v_2=v_2+v(i)^2;
end
[max_v,I]=max(abs(v));`
sum=0;
for i=1:length(data)
sum=sum+v(i);
end
average_data=sum/(length(data)-1); %计算数据的平均值
bzc=(v_2/(length(data)-2))^0.5; %计算数据的标准差
alpha=0.05;
t=tinv(1-alpha/2,length(data)-2);
if(v(I)>=(t*bzc)) %判断数据是否为粗大误差data(I)=[];
else break;
end
v=[];
end
end
if(length(data)>=10)
while(1)
for i=1:length(data) %计算残差和残差的平方和
v(i)=data(i)-average_data;
v_2=v_2+v(i)^2;
end
bzc=(v_2/(k-1))^0.5; %计算标准差
bzc_3=3*bzc;
[max_v,I]=max(abs(v));
if max_v>bzc_3 %根据莱以特准则剔除粗大误差data(I)=[];
end
v=[];
l=length(data);
if(k==l)
n=0;
end
end
p=0.95/2;
t=2.60;
end
delta=t*bzc; %极限误差
X_max=average_data+delta;
X_min=average_data-delta;
fid = fopen('result.txt', 'wt');
fprintf(fid,'delta=%12.8f\nX_max=%12.8f\nX_min=%12.8f\ndata(I)=%12.8f\ n',delta,X_max,X_min,data(I)); %把数据写入文本文档
fclose(fid);
用matlab处理数据可以做到效率高,成功率高,节约人力物力,通过此程序进行数据处理,方便快捷,并且可以重复使用
在进行研究过程中,由于我们对matlab软件没有深入了解,所以很多函数以及操作没有特别了解,对基本的操作流程也不是很熟悉。对此,我们上网找了很多关于matlab的基本教程和一些函数的表示方法,同时也去图书馆查阅了有关书籍,从而解决了困扰我们的难题,也让我们对matlab以及误差处理方面的知识有了深刻的了解。