资源简介
matlab编写的水准网平差文件,能够将已知的高程信息经过数据整理读入,自动计算出平差结果
代码片段和文件信息
%-------------------------------
% 水准网数据读入
%-------------------------------
[filenamefilepath]=uigetfile(‘水准网.txt‘‘TEXT file‘);
fn=num2str(filename);
fid1=fopen(fn);
if(fid1==-1)
msgbox(‘Input File or Path is not correct‘‘Warning‘‘want‘);
return;
end
% open a file to read
ed=fscanf(fid1‘%f‘1); % 已知点个数
dd=fscanf(fid1‘%f‘1); % 未知点个数
sd=ed+dd; % 总点数
gd=fscanf(fid1‘%f‘1); % 观测值个数
pn=fscanf(fid1‘%f‘sd); % 点号
%known data
H0=fscanf(fid1‘%f‘[2ed]); % 2*3矩阵形式的已知点点号及高程
H0=H0‘; % 3*2矩阵形式的已知点点号及高程
h01=H0(:1); % 已知点点号
h0=H0(:2); % 已知点高程
h0(dd+1:dd+ed)=h0(1:ed)
heightdiff=fscanf(fid1‘%f‘[4gd]); % 水准网观测数据信息
heightdiff=heightdiff‘;
k1=heightdiff(:1); % 起点点号
k2=heightdiff(:2); % 终点点号
h1=heightdiff(:3); % 高差观测值
dis=heightdiff(:4); % 距离观测值
fclose(‘all‘);
%-----------------------------------
%近似高程计算
%-----------------------------------
h0(1:dd)=20000;
ie=0;
while(1)
for k=1:gd
i=k1(k);
j=k2(k);
for a=1:sd
if(pn(a)==i)
m=a;
end
end
for b=1:sd
if(pn(b)==j)
n=b;
end % 点号转换
end
if(h0(m)<=1e4&h0(n)>=1e4)
h0(n)=h0(m)+h1(k);
ie=ie+1;
end
if(h0(m)>=1e4&h0(n)<=1e4)
h0(m)=h0(n)-h1(k);
ie=ie+1;
end
end
if(ie==dd)
break;
end
end
%---------------------------------
%水准网平差
%---------------------------------
A=zeros(gddd);
for k=1:gd
i=k1(k);
j=k2(k);
for a=1:sd
if(pn(a)==i)
m=a;
end
end
for b=1:sd
if(pn(b)==j)
n=b;
end
end
if n<=dd
A(kn)=1;
end
if m<=dd
A(km)=-1;
end
tl(k)=h0(m)-h0(n)+h1(k);
end % 至此为构建系数矩阵A及常数项L
[nt]=size(A);
r=n-t;
l=tl‘;
p=diag(1./dis); % 权阵
Delt_X=inv(A‘*p*A)*A‘*p*l;
h00=h0(ed+1:sd);
h0=h0(1:ed);
Xp=h0+Delt_X;
V=A*Delt_X-l;
Lp=h1+V;
%精度评定
uw0=sqrt(V‘*p*V/r);
Qxx=inv(A‘*p*A);
uwh=uw0*sqrt(diag(Qxx));
uwh(dd+1:ed+dd)=0.0;
Qff=A*Qxx*A‘;
uwl=uw0*sqrt(diag(Qff));
Xp=[Xp;h00];
h0=[h0;h00];
Delt_X=[Delt_X;zeros(ed1)];
%------------------------------------
%成果输出
%------------------------------------
[filenamepathname]=uiputfile(‘resultdata.txt‘‘TEXT file‘);
fn=num2str(filename);
fid2=fopen(fn‘wt‘);
if(fid2==-1)
msgbox(‘Error by Opening Output File‘‘Warning‘‘warn‘);
end
fprintf(fid2‘待定点高程平差值及中误差: \n pn h0(m) Delt_X(m) Xp(m) hm\n‘);
fprintf(fid2‘%5d %10.4f %10.4f %10.4f %10.4f\n‘[pnh0Delt_XX
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 737 2017-12-06 22:50 第5章 高程控制网平差程序设计\resultdata.txt
文件 3377 2017-12-06 22:50 第5章 高程控制网平差程序设计\ShuiZhunWang.m
文件 664 2017-11-07 15:42 第5章 高程控制网平差程序设计\SZWchengguoshuchu.m
文件 1167 2017-11-07 15:43 第5章 高程控制网平差程序设计\SZWduru.m
文件 684 2017-11-07 15:42 第5章 高程控制网平差程序设计\SZWjinsigaocheng.m
文件 749 2017-11-07 20:34 第5章 高程控制网平差程序设计\SZWpingcha.m
文件 123 2017-11-07 20:49 第5章 高程控制网平差程序设计\test.txt
文件 183 2017-11-07 21:26 第5章 高程控制网平差程序设计\水准网.txt
目录 0 2017-11-07 22:29 第5章 高程控制网平差程序设计
----------- --------- ---------- ----- ----
7684 9
相关资源
- 关于汽车的制动性的MAtlab仿真
- 使用Matlab和CCS设计FIR滤波器
- 用matlab语言实现编解码
- 模拟退火算法进行函数优化 matlab
- 通信原理仿真实验 matlab
- 数学物理方程大作业 matlab
- VIBE-MEX--
- 复化Simpson公式
- 基于MATLAB的模糊控制表计算程序.m
- BCH matlab 编码
- matlab guide 选择文件夹
- Matlab_2013_64bit支持VS2013 的配置文件
- 基于视频的matlab光流法
- matlab串口实时波形显示
- matlab神经网络、模糊和LQR控制一级、
- 一级倒立摆神经网络控制
- LK光流法MATLAB代码
- matlab串口实时显示波形。
- EXR格式图片Matlab读写插件
- matlab批量抠图
- Deep Semi-NMF源代码
- Semi-NMF源代码
- 背景差分提取,波门跟踪
- 傅立叶变换五大性质的matlab实现
- matlab中的牛顿下山法
- 基于形态学的matlab边缘检测小程序
- 超大tif图像分割为100等份
- matlab三相调压异步机电路
- 随机过程 布朗运动matlab仿真程序
- 多元霍夫曼编码的matlab实现
评论
共有 条评论