www.gusucode.com > matlab程序语言实现的水准网平差程序,使用于测绘人员 > code1/maltab程序语言实现的水准网平差程序,使用于测绘人员/malab水准网平差/readlevel.m
function [] = readlevel(infile) %readleveldat: read leveling data %INPUT: % infile: input file name % 1st line: nobsedge nknownpoint % 2nd line: start_ptid end_ptid height_diff distance % .................. % 2nd+nobsedge line: point_id point_height % .................. %OUTPUT: None % %AUTHOR: Hua WANG %DATE: 20/05/2009 %structures pt = struct('id',{},'hgt',{},'flag',{}); edge = struct('sptid',{},'eptid',{},'diffhgt',{},'dist',{}); %open input file fid=fopen(infile,'r'); if(fid==-1) error('Can not open input file!'); end %read point/edge number strline = fgetl(fid); [nobsedge,nknownpt]=strread(strline,'%d %d'); %read edge data for i=1:nobsedge strline = fgetl(fid); [edge(i).sptid,edge(i).eptid,edge(i).diffhgt,edge(i).dist]=strread(strline,'%s %s %f %f'); end %get names for all points list = sort([edge.sptid edge.eptid]); npt = length(list); ptlist(1) = list(1); j=2; for i=2:npt if strcmp(list(i),list(i-1))==0 ptlist(j)=list(i); j=j+1; end end npt=length(ptlist); for i=1:npt pt(i).id=ptlist(i); pt(i).hgt=0; pt(i).flag=1; end %read known point data for i=1:nknownpt strline = fgetl(fid); [id,hgt]=strread(strline,'%s %f'); j=find(strcmp(ptlist,id)==1); pt(j).hgt=hgt; pt(j).flag=0; end fclose(fid); save pt save edge return