“ 以上文提到的水准测量例子为基础,今天小编给大家讲解一道连续测站的水准测量记录表格简单MATLAB程序编写。”
01
—
例子
在水准点BMa和BMb之间进行水准测量,所测得的各测段的高差和水准路线长如图2所示。已知BMa的高程为5.612m,BMb的高程为5.400m。试将有关数据填在水准测量高差调整表中,最后计算水准点1和2的高程。
02
—
MATLAB程序编写
按照计算思路,将其转换为程序编写思维。首先,根据已知数据列一个计算数据结构,新建ptTab.mat文件,将已知数据存入其中,如下图所示:
其次,编写程序:
clear all
clc
load('ptTab','ptTab');
[r,c]=size(ptTab);
%判断出已知高程的点
jsq=0;
bz=0;
for i=1:r
if ptTab(i,4)~=0
ptTab(i,5)=0;%表示这个点是已知的
jsq=jsq+1;
Con_D(jsq,1)=ptTab(i,4);
end
if ptTab(i,4)==0
bz=bz+1;
ptTab(i,5)=bz;%表示这个点是未知的
end
end
%实际高差
deth=Con_D(2,1)-Con_D(1,1);
%累积距离、累计高差
Sum_dis=0;
Sum_h=0;
for i=1:(r-1)
Sum_dis=Sum_dis+ptTab(i,2);
Sum_h=Sum_h+ptTab(i,3);
end
Co_h=deth-Sum_h;
%按照距离长短、符号相反分配
for i=1:(r-1)
det_Co_h(i,1)=ptTab(i,2)/Sum_dis*Co_h;
ptTab(i,6)=det_Co_h(i,1);
ptTab(i,7)=ptTab(i,3)+ptTab(i,6);
end
%计算未知点高程
Con_D0=Con_D(1,1);
Sum_h0=0;
jsq=0;
for i=1:r
if ptTab(i,5)~=0
jsq=jsq+1;
Sum_h0=Sum_h0+ptTab(jsq,7);
ptTab(i,5)=Con_D0+Sum_h0;
end
end
msgbox '计算结束!'
将计算结果展示如下:
原计算结果如下所示,则可以得到程序计算结果是正确的。
大家学懂了吗?有兴趣的童靴们可以关注微信公众号:闲谈测绘。小编会每天给大家普及和介绍一些小知识、小程序和小软件。