文档详情

基于MATLAB的控制网平差程序设计--第四章源代码.doc

发布:2025-04-14约6.64千字共9页下载文档
文本预览下载声明

chkdat函数(72页)

function[n1,k]=chkdat(sd,pn,n1)

n=length(n1);

k=0;

fori=1:n

i1=0;

forj=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

globalfilenamefilepath;

globaledddsdpngdh0k1k2h1sk11k12;

k1=[];k2=[];h=[];s=[];

[filename,filepath]=uigetfile(*.txt,选择高程数据文件);

fid1=fopen(strcat(filepath,filename),rt);

if(fid1==-1)

msgbox(InputFileorPathisnotcorrect,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)%计算近似高程

fork=1:gd

i=k1(k);

j=k2(k);

if(h0(i)1e4h0(j)1e4)

h0(j)=h0(i)+h1(k);

ie=ie+1;

end

if(h0(i)1e4h0(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页)

functionid=bm1(gd,dd,k1,k2)

%计算一维压缩存放的数组id

id=[];

fori=1:dd

k=i;

forj=1:gd

i1=k1(j);

i2=k2(j);

if(i1==ii2k)

k=i2;

end

if(i2==ii1k)

k=i1;

end

end

id(i)=k;

end

fori=2:dd

id(i)=id(i-1)+i-id(i)+1;

end

return

一维压缩存储法方程平差(76页)

globalpathnamefilename

globaledddsdpngdh0k1k2h1sdh;

p=1./s;

id=bm1(gd,dd,k1,k2);

mm=id(dd);

a(1:mm)=0;

b(1:dd)=0;

fork=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

显示全部
相似文档