控制网平差程序设
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
间接平差编程源代码
chkdat函数(72页)
function [n1,k]=chkdat(sd,pn,n1)
n=length(n1);
k=0;
for i=1:n
i1=0;
for j=1:sd
if(n1(i)==pn(j))
i1=1;
n1(i)=j;
break;
end
end
if(i1==0)
% fprintf(fit2,'%5d %5d\n',i,n1(i)
k=1;
end
end
return
readlevelnetdata函数(73页)
function [ed,dd,sd,gd,pn,h0,k1,k2,h1,s]=readlevelnetdata global filename filepath;
global ed dd sd pn gd h0 k1 k2 h1 s k11 k12;
k1=[];k2=[];h=[];s=[];
[filename,filepath]=uigetfile('*.txt','选择高程数据文件');
fid1=fopen(strcat(filepath,filename),'rt');
if(fid1==-1)
msgbox('Input File or Path is not correct','Warning','warn');
return;
end
ed=fscanf(fid1,'%f',1);
dd=fscanf(fid1,'%f',1);
sd=ed+dd;
gd=fscanf(fid1,'%f',1);
pn=fscanf(fid1,'%f',sd);
h0=fscanf(fid1,'%f',ed);
h0(dd+1:ed+dd)=h0(1:ed);
heightdiff=fscanf(fid1,'%f',[4,gd]);
heightdiff=heightdiff';
k1=heightdiff(:,1);%起点
k2=heightdiff(:,2);%终点
k11=heightdiff(:,1);%起点
k12=heightdiff(:,2);%终点
h1=heightdiff(:,3);%高差
s=heightdiff(:,4);%距离
fclose('all');
%点号转换
[k1,k01]=chkdat(sd,pn,k1);
[k2,k02]=chkdat(sd,pn,k2);
h0(1:dd)=20000;
ie=0;
while(1)%计算近似高程
for k=1:gd
i=k1(k);
j=k2(k);
if(h0(i)<1e4&h0(j)>1e4)
h0(j)=h0(i)+h1(k);
ie=ie+1;
end
if(h0(i)>1e4&h0(j)<1e4)
h0(i)=h0(j)-h1(k);
ie=ie+1;
end
end
if(ie==dd)
break;
end
end
h0=reshape(h0,length(h0),1); return
bm1函数(75页)
function id=bm1(gd,dd,k1,k2)
%计算一维压缩存放的数组id
id=[];
for i=1:dd
k=i;
for j=1:gd
i1=k1(j);
i2=k2(j);
if(i1==i&i2 k=i2; end if(i2==i&i1 k=i1; end end id(i)=k; end for i=2:dd id(i)=id(i-1)+i-id(i)+1; end return 一维压缩存储法方程平差(76页) global pathname filename global ed dd sd pn gd h0 k1 k2 h1 s dh; p=1./s; id=bm1(gd,dd,k1,k2); mm=id(dd); a(1:mm)=0; b(1:dd)=0; for k=1:gd %形成法方程 i=k1(k); j=k2(k); h1=h1(k)+h0(i)-h0(j); if(i<=dd) ii=id(i)-i; a(ii+i)=a(ii+i)+p(k); b(i)=b(i)-h1*p(k); end if(j<=dd) jj=id(j)-j; a(jj+j)=a(jj+j)+p(k); b(j)=b(j)+h1*p(k); if(i<=dd) if(i>=j) a(ii+j)=a(ii+j)-p(k); else a(jj+i)=a(jj+i)-p(k); end end end end a=gs5(dd,a,id);%变带宽下三角紧缩存储高斯消元法dh=cy6(a,b,id,dd,1);%常数项约化与回代子程序 dh(dd+1:ed+dd)=0; hm(dd+1:ed+dd)=0; for i=1:sd