- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
水准间接平差程序设计
地球科学与环境工程学院
水准间接平差实验报告书
课程名:《误差理论与测量平差基础》
学 号:
姓 名: 黄黎东
指导老师:
日 期: 2015年12月7日
一、任务概述
利用MATLAB或者C++编程间接平差程序,通过该程序读取观测数据文件,并计算出平差结果。
二、计算结果截图:
图一
图二
图三
图四
三、水准网图
四、输入的数据格式
数据格式为TXT文件,如图所示:
TXT文件格式说明:
(1)第一行格式
第一行分别表示观测个数5
第一行分别表示观测个数5个,水准点数4个,未知点3个,已知点1个,所有数据用英文逗号隔开
(2)已知点数据格式
第二行开始是已知点点号和高程,一行列一个已知点点号和高程,由于该水准网只有一个已知点,所有只能列出一行。图中表示已知点点号为1,高程为
第二行开始是已知点点号和高程,一行列一个已知点点号和高程,由于该水准网只有一个已知点,所有只能列出一行。图中表示已知点点号为1,高程为237.483m
(3)测站起始点号格式
该部分表示测站的起始点点号
该部分表示测站的起始点点号
(4)测站终点点号格式
该部分表示测站的终点点号
该部分表示测站的终点点号
(5)高差格式
该部分表示各测站的高差
该部分表示各测站的高差
(6)距离格式
该部分表示各测站的距离S
该部分表示各测站的距离S
五、流程图
六、附件代码
function SDJianJiePingCha()
[FileName,PathName] = uigetfile(*.txt,打开水准观测数据);%打开文件
f=csvread( strcat(PathName,FileName));%打开文件并存在矩阵f中
point=f(1,2);%获取所有水准点个数
n=f(1,1);%获得观测个数n
t=f(1,3);%获得必要观测个数t
y=f(1,4);%获得已知点个数y
XX=zeros(point,1);%初始化XX阵等于0,方便下面把已知点高程和未知点参数估值放到XX阵
B=zeros(n,t);%初始化B阵,方便下面求V=Bx-l中的系数阵B;
for j=1:y
XX(j,1)=f(j+1,2);%把已知点高程放到XX阵中
end
data=f((2+y):end,:);%从文件中获取观测数据,并放到data阵中
h=data(:,3);%从data中获取观测高差,并放到h阵中
P=zeros(n);%初始化权阵P
for j=1:n
P(j,j)=10/data(j,4);%以10km观测值为单位权误差计算权阵P
end
for i=1:n%通过循环求B阵
point1=data(i,1);%获取某个测站的起始点号
point2=data(i,2);%获取某个测站的终点点号
if point1ypoint2y%当某测站起始点和终点高程都未知时,求B阵第i行
B(i,point1-y)=-1;
B(i,point2-y)=1;
elseif point1=ypoint2y%当起始点高程已知和终点高程未知时,求B阵第i行
B(i,point2-y)=1;
XX(point2,1)=XX(point1,1)+h(i,1);%求第i个参数估值
elseif point1ypoint2=y%当起始点高程未知和终点高程已知时,求B阵第i行
B(i,point1-y)=-1;
XX(point1,1)=XX(point2,1)-h(i,1);%求第i个参数估值
end
end
l=zeros(n,1);%初始化小l阵,方便下面求V=Bx-l中的系数阵l;
for i=1:n%通过循环求小l
point1=data(i,1);
point2=data(i,2);
l(i,1)=-(XX(point2,1)-XX(point1,1)-h(i,1));
end
%带入间接平差数学模型公式进行计算:
r=n-t;%求多余观测数
N=B*P*B;
W=B*P*l;
x=N\W;
X=XX((y+1):end,1)+x;
V=B*x-l;
L=h+V;
a0=sqrt(V*P*V/r);
Qxx=inv(N);
Dxx=a0*a0*inv(N);
%输出计算结果:
disp(参数改正数:)
x=x
disp(参数平差值:)
X=X
disp(观测值改正数:)
V=V
disp(观测值平差值:)
L=L
disp(协方差阵:)
Dxx
文档评论(0)