对粗大误差和随机误差处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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以及误差处理方面的知识有了深刻的了解。

相关文档
最新文档