% 实验3 % 读取数据 [filename1,p1]=uigetfile('*.txt', '选择尼康全站仪坐标文件名'); fp=fopen(strcat(p1,filename1),'r'); i=1;bss=[]; while ~feof(fp) line=fgetl(fp); data=findstr(line,','); bss(i).dh=line(1:data(1)-1); bss(i).x=str2num(line(data(1)+1:data(2)-1)); bss(i).y=str2num(line(data(2)+1:data(3)-1)); bss(i).h=str2num(line(data(3)+1:data(4)-1)); bss(i).dm=line(data(4)+1:end); i=i+1; end fclose(fp); % 计算国家坐标系的坐标 a=3976223.453;b=39512553.524;rad=deg2rad(0.433267); c=cos(rad);d=-sin(rad);lmd=1.000034336; m=i-1;gjzb=[]; for i=1:m gjzb(i).dh=bss(i).dh; gjzb(i).dm=bss(i).dm; gjzb(i).h=bss(i).h; gjzb(i).x=a+lmd*(c*bss(i).x-d*bss(i).y); gjzb(i).y=b+lmd*(d*bss(i).x+c*bss(i).y); end % 输出数据 [filename2,p2]=uigetfile('*.txt', '输出文件'); fn=fopen(strcat(p2,filename2),'w'); fprintf(fn,'%s\n\n',' 点名 X(m) Y(m) H(mm) code'); fclose(fp);fn=fopen(strcat(p2,filename2),'a'); for i=1:m fprintf(fn,'%8s', gjzb(i).dh); fprintf(fn,'%15.3f', gjzb(i).x); fprintf(fn,'%16.3f', gjzb(i).y); fprintf(fn,'%10.3f', gjzb(i).h); fprintf(fn,'%8s\n', strcat(' ',gjzb(i).dm)); end fclose(fn);