文档详情

水准间接平差程序设计.docx

发布:2019-02-26约2.08千字共8页下载文档
文本预览下载声明
地球科学与环境工程学院 水准间接平差实验报告书 课程名:《误差理论与测量平差基础》 学 号: 姓 名: 黄黎东 指导老师: 日 期: 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
显示全部
相似文档