一、程序结构:

输入文件格式如下所示:

1 读取文件:主要用到fopen, str2num函数

fid = fopen('input_leveling.txt','r');
line1 =  fgetl(fid);
vec1 = str2num(line1);
%read the first line and change it to number vector (the number of known points, unknown points, and obervations)
num_known = vec1(1);
num_unknown = vec1(2);
num_observ = vec1(3);
line2 = fgetl(fid); %read the second line(the index of known point)
idx_known = str2num(line2);
line3 = fgetl(fid);% read the third line(the height of known point)
h_known = str2num(line3);
line4 = fgetl(fid)
flag = str2num(line4);
for iii = 1:num_observ %  read the obersvation dataline = fgetl(fid);observs(:, iii) = str2num(line);
end

2 初始化高程向量,若其为未知点,则高程设为1e8,若为已知点,则为其高程。

start_pt = observs(1,:); % start point
end_pt = observs(2,:);% end point
h = observs(3,:);% oberved height
dist = observs(4,:);% distances of each baseline
num_total = num_known+num_unknown;
ttt = 1;
%create the origin height vector
%for unknown points -> 1e6
%for known points -> height
for kkk = 1:num_totalif(sum(kkk == idx_known) == 1)h0(kkk) = h_known(ttt);ttt = ttt+1;elseh0(kkk) = 1e6;end
end

3 利用while函数和for函数求其初始高程:

idx_unknown =  find(h0 == 1e6);
%calculate the origin height of each points
while(sum(h0 == 1e6)>=1)for ttt = 1:num_observstarts= start_pt(ttt);ends = end_pt(ttt);if((h0(starts)>= 1e6)&&(h0(ends)<1e6))h0(starts) = h0(ends) - h(ttt);elseif((h0(starts)< 1e6)&&(h0(ends)>=1e6))h0(ends) = h0(starts) + h(ttt);endend
end

4 求解B矩阵, l 矩阵以及权重矩阵:

p = diag(1./dist);% p is the weight matrix
B = zeros(num_observ, num_unknown);% B
for hhh = 1:num_observ;starts_ = start_pt(hhh);ends_ = end_pt(hhh);if(sum(find( idx_known == starts_ )) == 0)%if the start point is unknown set it to -1starts_index = find(idx_unknown == starts_) ;      B(hhh, starts_index) = -1;endif(sum(find( idx_known == ends_ )) == 0)%if the end point is unknown set it to 1ends_index = find(idx_unknown == ends_) ;B(hhh, ends_index) = 1;endl(hhh) = -h0(starts_) + h0(ends_) - h(hhh);
end

5 利用得到的B, p, l进行平差:

%adjustment
l = -l;Nbb = B'*p*B;
w = B'*p*l';
x_ = inv(Nbb)*w;
v = B*x_ - l';
num_r = num_observ-(num_unknown);
sigma0 = sqrt(v'*p*v/num_r);
Qxx = inv(B'*p*B);
ttt = 1;
for sss = 1: num_totalif(sum(find( idx_known == sss )) == 0 )sigma(sss) = sigma0*sqrt(Qxx(ttt,ttt));dh(sss) = x_(ttt);ttt  = ttt+1;elsesigma(sss) = 0;dh(sss) = 0;end
end

6 输出

%outputs the results
fid2 =  fopen('adjustment_results.txt','wt')
fprintf(fid2, '%4s   %4s        %4s       %4s         %4s\n', 'idx','h0','dh','h','theta_h')
for ppp = 1: num_totalfid3 =  fopen('adjustment_results.txt','a') fprintf(fid3, '%2d   %4.4f   %4.4f   %4.4f   %4.4f\n', ppp, h0(ppp),dh(ppp),h0(ppp)+dh(ppp),sigma(ppp))
end

水准网平差程序Matlab实现 全部代码,详细教程相关推荐

  1. 水准路线平差c语言程序,水准网平差程序的设计与实现

    水准网平差程序的设计与实现 维普资讯 http://doc.docsou.com 第1 6卷第 4期 2 0托 l 00 2月 昆明冶金高等专科学校学报 /, v1N 8 I 0. I l 6 . 4 ...

  2. 微信小程序如何进行反编译详细教程

    前言介绍 小程序反编译,其实还是简单的,要想拿到微信小程序源码,先要拿到小程序的包,用反编译脚本跑一下,微信小程序代码包里的所有文件.所有资源就出来了(除了project.config.json小程序 ...

  3. clion配置_Ubuntu16.04系统下用CLion编译器调试ROS代码详细教程

    本教程主要实践如何创建一个ROS工作空间和功能包实现基于ROS的信息发送和接收,同时用CLion如何去调试这个ROS工程.ROS允许多个工作空间并存,每个工作空间中创建需要的功能包,功能包创建于工作空 ...

  4. (C#)一个简易的水准网平差程序

    这是用C#链表写的一个简易的水准网按测距平差的窗体程序. 这是运行的窗体界面: 读取的数据格式为:点号,高差,测距.例如: 得出的运行结果如下: 下面就是我的具体代码: using System; u ...

  5. PyInstaller打包深度学习模型代码详细教程

    前言:由于工作需求,需要使用Pyinstaller库将Python脚本打包成exe文件,特此花几天时间查找资料,进行实验.将过程做个梳理,记录下来,方便自己和他人日后查询. 目录 一.安装PyInst ...

  6. QT Creator 应用程序*.exe文件打包发布详细教程【绿色便携形式 和 安装包形式】

      说明:本文相关操作均基于 Windows10 操作系统 + Qt应用程序框架(5.14.1) + Qt Creator 集成开发环境(4.11.1) +MinGW编译环境,Qt 及 IDE的版本查 ...

  7. 餐饮外卖平台小程序源码,附带详细教程

    餐饮外卖平台小程序V正式版,打造自己的美团/饿了么?平台.店铺在后台扣除自定义设置,资金统一进入平台账户,然后平台赚钱给商家店铺. 客户端小程序 客户端:自助点餐可以随时获取商家的商品动态,订单信息一 ...

  8. pycharm远程连接并自动同步代码详细教程

    PS:Pycharm的远程连接功能需要专业版才有,社区版没有这个功能. 参考了:https://blog.csdn.net/pickoak/article/details/109827132 http ...

  9. 简单三步教会你在前端监控平台:安装小程序、uni-app探针(详细教程)

    Webfunny现在支持微信小程序.uni-app的监控探针了,两个平台安装探针的方式很相似. 一.微信小程序探针安装 (1)首先创建一个微信小程序项目 (2)项目生成后,复制探针代码.在小程序项目的 ...

最新文章

  1. 计算机网络基础文档,计算机网络基础-20210608152532.pdf-原创力文档
  2. 【转】分享oldjun老大***网站的经验
  3. TraceEventsDB event(跟踪事件)总结
  4. mysql a锁_MYSQL中的锁
  5. 光伏补贴双轨制仍将延续
  6. 电影购票c语言程序,C语言电影购票系统小样
  7. stmt php,PHP mysqli_stmt_free_result() 函数用法及示例
  8. setup maven plugin connection
  9. 如梦若梦,肾盂肾炎似烟火
  10. 拼多多API根据ID获取商品详情
  11. oracle移动文件命令是什么意思,Oracle使用命令移动各类文件的方法
  12. canvas实现粒子跟随鼠标动画
  13. JDBC数据库驱动的下载与安装与连接
  14. 【论文阅读】Oriented R-CNN for Object Detection
  15. 零基础怎么学习视频剪辑?这篇初剪辑学者指南你一定不要错过
  16. 商用在线客服软件测试报告
  17. 如何使用VGG16提取某层的特征?
  18. Python模块之chardir: 使用chartdir生成各种图表
  19. 动词未然形+「ず」表示什么?
  20. C# Media Player控件(转)

热门文章

  1. matlab里step怎么用,matlab中step意思及如何应用?
  2. Python商务数据与分析:转换列表数据为字典并打印输出表格
  3. camera的Skipping mode 和 Binning mode
  4. KMS激活方案(一)
  5. vue中ajax同步_Vue处理ajax请求
  6. CAE工程师常用前处理器软件(一)
  7. PTA 天梯赛习题集 L1-059 敲笨钟
  8. youknowiwill用计算机数字,高考英语作文高级表达
  9. AMD的CPU装androidstudio,以及联想拯救者r7000配置虚拟化无法使用解决
  10. 基于PYTHON的ABAQUS后处理开发!