基于MATLAB的误差数据处理实验报告
《误差理论与数据处理》实验
20121138晋美扎巴·测控三班
实验一:MATLAB 软件基础
(一)实验目的:熟悉MATLAB 软件的用户环境;了解MATLAB 软件的一般目的命令;掌握MATLAB 教组操作与运算函数;掌握MATLAB 软件的基本绘图命令;掌握MATLAB 语言的几种循环、条件和开关选择结构。
(二)实验内容:
1. MATLAB 软件的数组处理及运算操作
E=eye(3,3);
R=rand(3,2);
O=zeros(2,3);
S=[2,0;0,4];
A=[E,R;O,S]
B=[E,R+R*S;O,S^2]
C=A*A
所以B=C,原结论成立。
2. 直接使用MATLAB 软件进行作图练习
(1)t=-1:0.01:1;
x=sin(2*pi*t);
y=cos(2*pi*10*t);
plot(t,x,t,y)
xlabel('t' );ylabel(' 函数值' )
legend(' 正弦函数' , ' 余弦函数' )
(2)
1) x=-10:0.01:10;
y=normpdf(x,0,1);
plot(x,y)
(3)[x,y]=meshgrid(-10:0.05:10);
z=sin(pi*sqrt(x.^2+y.^2));
mesh(x,y,z);
3. 用MATLAB 语言编写命令M-文件和函数M-文件 a=input(' 请输入a 的值' )
x0=a./2
x1=(x0+a./x0)./2
while (abs((x0-x1)>1e-5))
x0=x1;
x1=(x0+a./x0)./2;
end
digits(8)
vpa(x1)
实验二:测量数据的统计分析
(一)实验目的:通过对测量数据进行统计分析,学习掌握测量数据统计分析的基本方法。
(二)实验内容:
1. >> x=normrnd(10,5,500,1);
>> mu=mean(x)
mu =9.7672
>> sigma=std(x) sigma =4.8754
>> va=var(x)
va =23.7697
>> hist(x)
>> y=normpdf(x,mu,sigma);
>> plot(x,y)
2. x=-15:0.01:15; y1=normpdf(x,0,1); y2=normpdf(x,0,4); y3=normpdf(x,10,1); plot(x,y1,y2,y3);
3.>> x=randn(500,1); >> mu=mean(x); >> va=var(x);
>> cs=skewness(x); >> ck=kurtosis(x); >> hist(x);
>> sigma=std(x);
>> y=normpdf(x,mu,sigma); >> plot(x,y)
>> cs
cs =0.1117
>> ck
ck =3.0089
>> mu
mu =0.0730
>> va
va=0.9981
4. >> x=-5:0.1:5; >> y1=tpdf(x,5); >> y2=tpdf(x,10); >> y3=tpdf(x,20); >> z=normpdf(x,0,1); >>
plot(x,y1,x,y2,x,y3,x,z)
5.>> x=0:0.2:30;
>> y1=chi2pdf(x,5);
>> y2=chi2pdf(x,10);
>> y3=chi2pdf(x,20);
>>plot(x,y1,x,y2,x,y3)
6. x=0:0.01:10;
y1=fpdf(x,4,5);
y2=fpdf(x,10,20);
y3=fpdf(x,50,50);
plot(x,y1,x,y2,x,y3)
实验三:等精度和非等精度直接测量数据处理
(一)实验目的:通过本实验使学生掌握等精度和非等精度直接测量数据的基本处理方法;学习如何发现和处理测量列中的随机误差、系统误差和粗大误差,如何科学地表达测量结果。
(二)实验内容:
l=[24.674,24.675,24.673,24.676,24.671,24.678,24.672,24.674];
x1=mean(l);
v=l-x1;
a=sum(v);
ah=abs(a);
bh=ah-(8/2)*0.0001;
xt=sum(v(1:4))-sum(v(5:8));
bz=sqrt((sum(v.^2)/7));
p=sort(l)
g0=2.03;
g1=(x1-p(1))/bz;
g8=(p(8)-x1)/bz;
sc=bz/(sqrt(8));
t=2.36;
jx=t*sc
l1=x1+jx;
l2=x1-jx
结果:p =24.6710 24.6720 24.6730 24.6740 24.6740 24.6750 24.6760 24.6780
jx =0.0019
l2 =24.6723
实验四:分析发现测量数据中的系统误差
(一)实验目的:通过本实验使学生掌握分析、发现测量数据中系统误差的基本数据原理;掌握分析发现单个测量列中系统误差的基本方法;掌握采用假设检验的统计分析方法分析两组测量数据间是否存在系统误差的方法。
(二)实验内容:
1. 残余误差观察法
x=[20.06 20.07 20.06 20.08 20.10 20.12 20.11 20.14 20.18 20.18 20.21 20.19];
p=mean(x);
for n=1:8
b(1,n)=x(n)-p;
end
b
plot(b)
xlabel('X');
ylabel('Y');
马利科夫准则:n=12;K=6;
(-0.0650-0.0550-0.0650-0.0450-0.0250-0.0050)-(-0.0150+0.0150
+0.0550+0.0550+0.0850+0.0650)= -0.5200;
不同公式计算标准差比较法:
x=[20.06 20.07 20.06 20.08 20.10 20.12 20.11 20.14 20.18 20.18 20.21,20.19];
n=length(x)
sigma1=std(x);
p=mean(x);
for m=1:12;
b(1,m)=x(m)-p;
end
b
sigma2=1.253*sum(abs(b))./sqrt(n*(n-1));
u=1-sigma2./sigma2;
if u>=2./sqrt(n-1)
disp(' 怀疑测量列中存在系统误差' )
else disp(' 测量列中不存在系统误差' )
end
结果为:b =
Columns 1 through 10
-0.0650 -0.0550 -0.0650 -0.0450 -0.0250 -0.0050 -0.0150 0.0150 0.0550 0.0550
Columns 11 through 12
0.0850 0.0650
测量列中不存在系统误差
2. 秩和检验法
x1=[14.7 14.8 15.2 15.6];
x2=[14.6 15.0 15.1];
y=[x1 x2];
y=sort(y);
T=0;
for n=1:length(x2);
for i=1:length(y);
if (x2(n)==y(i))
T=T+i;
end
end
end
T1=7;T2=17;T
if ((TT1))
disp(' 无根据怀疑两组数据之间存在系统误差' )
end
T =10
无根据怀疑两组数据之间存在系统误差
3.t 检验法
x=[1.9 0.8 1.1 0.1 -0.1 4.4 5.5 1.6 4.6 3.4];
y=[0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0.0 2.0];
nx=length(x);ny=length(y);
xp=mean(x);yp=mean(y);
for n=1:10;
remainx(1,n)=x(n)-xp;
remainy(1,n)=y(n)-yp;
end
sigmax2=sum(remainx.^2)/nx;
sigmay2=sum(remainy.^2)/ny;
t=(xp-yp)*sqrt(nx*ny*(nx+ny-2)/((nx+ny)*(nx*sigmax2+ny*sigmay2)));
mu=nx+ny-2;
aplha=0.05;
p=2.10;
if abs(t)
disp(' 无根据怀疑两组数据间存在系统误差' )
else disp(' 两组数据间存在系统误差' )
end
T= 1.8608
无根据怀疑两组数据间存在系统误差
实验五:线性函数的最小二乘法处理
(一)实验目的:本实验要求学生编写最小二乘数据处理程序并对组合测量数据进行处理,求出最佳估计值并进行精度分析。
(二)实验内容:
L=[1.015;0.985;1.020;2.016;1.981;3.032]
A=[1,0,0;0,1,0;0,0,1;1,1,0;0,1,1;1,1,1]
C=inv(A'*A)
X=C*A'*L
x1=X(1,1),x2=X(2,1),x3=X(3,1)
V=L-A*X
v1=V(1,1),v2=V(2,1),v3=V(3,1),v4=V(4,1),v5=V(5,1),v6=V(6,1) b=sqrt((v1^2+v2^2+v3^2+v4^2+v5^2+v6^2)/3)
d11=C(1,1),d22=C(2,2),d33=C(3,3)
bx1=b*sqrt(d11)
bx2=b*sqrt(d22)
bx3=b*sqrt(d33)
bx1 =0.0095
bx2 =0.0095
bx3 =0.0095
实验六:一元/多元回归数据处理
(一)实验目的:通过本实验使学生掌握一元线性回归方程的求解和方差分析、显著性检验方法;掌握一元非线性回归方程的求解和显著性检验方法;掌握多元线性回归方程的求解和方差分析、显著性检验方法;掌握回归数据处理的程序设计方法。
(二)实验内容:
1. x=[26.8 25.4 28.9 23.6 27.7 23.9 24.7 28.1 26.9 27.4 22.6 25.6]; y=[26.5 27.3 24.2 27.1 23.6 25.9 26.3 22.5 21.7 21.4 25.8 24.9];
A=[ones(1,12);x]';
B=[ones(1,12);y]';
a=inv(A'*A)*A'*y';
b=inv(B'*B)*B'*x';
x1=20:.1:30;
y2=20:.1:30;
y1=a(1)+a(2)*x1;
x2=b(1)+b(2)*y2;
plot(x,y,'o' ,x1,y1,y2,x2)
yg=a(1)+a(2)*x;
U=sum((yg-mean(y)).^2);
Q=sum((y-yg).^2);
F=U./(Q./10);
S2=Q/10;
S=Q+U;
U,Q,F,S2,S
U =20.2621
Q =26.8845
F =7.5367
S2=2.6885
S =47.1467
2. x=[1.585 2.512 3.979 6.310 9.988 15.85];
y=[0.03162 0.02291 0.02089 0.01950 0.01862 0.01513]; z2=log(x),z1=log(y);
plot(z2,z1)
A=[ones(1,6);z2]';
a=inv(A'*A)*A'*z1';
x1=1:.1:20;
y1=exp(a(1))*x1.^a(2);
plot(x,y,'o' ,x1,y1)
3.
x1=[1.32 2.69 3.56 4.41 5.35 6.20 7.12 8.87 9.80 10.65];
x2=[1.15 3.40 4.10 8.75 14.82 15.15 15.32 18.18 35.19 40.40]; y=[6.40 15.05 18.75 30.25 44.85 48.94 51.55 61.50 100.44 111.42]; X=[ones(1,10);x1;x2]';
b=inv(X'*X)*X'*y'
yg=b(1)+b(2)*x1+b(3)*x2;
yp=ones(1,10)*mean(y);
U=sum((yg-yp).^2);
Q=sum((y-yg).^2);
F=(U./2)./(Q./7);
sigma2=Q./7;
C=inv(X'*X);
c=[C(1,1) C(2,2) C(3,3)];
p=(b.^2)'./c;
Fi=p./(ones(1,3)*sigma2)
计算结果为:
b =0.5800 2.7122 2.0497
U =1.0953e+04 Q =3.0213 F =1.2689e+04
c =0.8532 0.0946 0.0054 p =0.3942 77.7452 784.3587 Fi =0.9 180.1 1817.0* F 值远远大于F 0.01(2,7)=9.55,则此回归方程在0.01的水平上是显著的。
查F 分布表,得F 0.01(1,7)=12.25,且F1=180.1,F2=1817.0,两者远远大于
F 0.01(1,7)=12.25,故x1、x2都为主要因素