MATLAB在测量误差分析中的应用.doc
文本预览下载声明
MATLAB在测量误差分析中的应用
在技术测量中,按照误差的特点与性质,误差可分为:系统误差,粗大误差和随机误差。在假定不含有系统误差的情况下,可借助MATLAB对测量数据进行处理,使处理过程快速、结果可靠。处理测量数据的处理过程如下:
(1)按测量的先后顺序记录下个测量值;
(2)计算算术平均值;
(3)计算残余误差;
(4)校核算术平均值及残余误差;
(5)判断是否有粗大误差,若有,剔除;
(6)计算单次测量的标准差;
(7)计算算术平均值的标准差:
(8)计算算术平均值的极限误差;
(9)列出测量结果。
误差处理时常用的MATLAB函数
序号 函数名 调用格式 作用 1 abs B=abs(a) 求绝对值 2 sqrt B=sqrt(a) 对向量中的值依次开平方 3 mean b=mean(a) 求平均值 4 std b=std(a) 求标准差 5 cov a=cov(x,y) 求协方差 6 normrnd W=normrnd(,, ,) 生成正态分布的向量 7 normstat [E,D]=(mu,sigma) 计算正态分布的期望与方差 8 normfit [muhat,sigmut,muci,sigmaci]= normfit(X,Alpha) 已知数据符合正态分布,对参数进行点估计和区间估计
其算法流程图如下:
例:现对某被测量进行20次测量,得到测量序列x,其中第1个数为粗大误差,需运用莱以特准则将其剔除,再对数据进行分析计算,具体程序如下:
close all
clear
clc
x= [28.0057 24.9974 24.9962 24.9970 24.9852 24.9977 25.0012 25.0031 25.0144 24.9965 25.0062 25.0080 25.0094 24.9901 25.0021 25.0024 24.9899 24.9926 25.0108 24.9987]; % 含有粗大误差的测量值序列
aver=mean(x) % 求该序列的平均值
v=x-aver; %测量值的剩余误差
s=std(x) %测量值的标准差
n=length (x); %剔除粗大误差
for i=1:n
if (abs((x(i)-aver))-3*s) 0
fprintf(\n)
fprintf(%óD′?′ó?ó2?: ,x(i))
x(i)=0;
else
continue
end
end
x1=x(x~=0) %剔除粗大误差的新测量值序列
n1=length(x1);
aver1=mean(x1) ; %新序列的平均值
h1=std(x1);
aver1 %测量值的最佳近似值
s1=h1/sqrt(n1) %算术平均值的标准差
运行结果:
aver = 25.1502
s = 0.6721
x1 = 24.9974 24.9962 24.9970 24.9852 24.9977 25.0012 25.0031 25.0144 4.9965 25.0062 25.0080 25.0094 24.9901 25.0021 25.0024 24.9899 24.9926 25.0108 24.9987 %新序列
aver1 = 24.9999
s1 = 0.0018
由结果可知:通过上述方法处理测量数据可剔除粗大误差,极大减小测量结果的标准差,且处理过程快速、结果可靠。
开 始
输入数据
计算平均值
计算残余误差
计算单次测量标准差
判断是否含粗大误差
计算算术平均值标准差S
写出计算结果
否
剔除含粗大误差的数据
显示全部