《基于matlab的坐标正反算》由会员分享,可在线阅读,更多相关《基于matlab的坐标正反算(6页珍藏版)》请在人人文库网上搜索。
1、基于 matlab 的坐标正反算测量程序设计实验报告实验名称 : 坐标正反算实验三坐标正反算一、实验目的编写坐标正反算程序 , 并对格式化文件数据进行计算, 验证程序。二、实验内容1、编写坐标正算程序1)建立以 xy_direct命名的函数 , 函数输入输出格式为x2,y2 = xy_direct(x1,y1,distance, azimuth)度转度分秒 : function dms= degree2dms(jiaodu)degree = fix(jiaodu);mimute = fix(jiaodu-degree)*60);second = (jiaodu-degree)*60-mimut。
2、e)*60;dms = degree+mimute/100+second/10000;度分秒转度 :基于 matlab 的坐标正反算 function degree = dms2degree(jiaodu) degree = fix(jiaodu); mimute = fix(jiaodu-degree)*100); second = (jiaodu-degree-mimute/100)*10000;degree = degree+mimute/60+second/3600;弧度转度 : function dms=rad2dms(rad) rad=abs(rad); jiaodu=rad*18。
3、0 、0/pi; % l=fix(a) % b=(a-l)*60 、 0 % m=fix(b) % a=l+m/100 、0+(b-m)*0 、006 % if(rad % dms=-a; % else % dms=a; % end degree = fix(jiaodu); mimute = fix(jiaodu-degree)*60);基于 matlab 的坐标正反算 second = (jiaodu-degree)*60-mimute)*60; dms = degree+mimute/100+second/10000; if(rad function x2,y2 = xy_direct(。
4、x1,y1,distance, azimuth) x2=x1+distance 、*cos(azimuth*pi/180);y2=y1+distance 、*sin(azimuth*pi/180);end2) 对文件 data1 、txt 中数据进行坐标正算 , 并将已知点与计算点坐标按照格式存贮在文件 data2 、 txt 中,data1 、txt格式为 : x1y1距离方位角 (dd 、 mmss)data2 、txt格式为 :x1y1x2y2 =uigetfile; file=pathname,; data=importdata(file);基于 matlab 的坐标正反算 %x1,y。
5、1=data 、data(:,1,2); azimuth=dms2degree(data 、 data(:,4); distance=data 、data(:,3); %x2,y2=xy_direct(x1,y1,distance,azimuth);x2,y2=xy_direct(data、data(:,1),data、data(:,2),distance,azimuth); =uiputfile; pathname_out,; fid=fopen(,wt); fprintf(fid,x1 y1 x2 y2n); fprintf(fid,%8、2f %8、2f %8、2f %8、2fn,dat。
6、a、data(:,1:2),x2,y2); fclose(all) ans =02、编写坐标反算程序1) 建立以 xy_inv 命名的函数 , 函数输入输出格式为distance, azimuth = xy_inv(x1,y1, x2,y2) function distance, azimuth = xy_inv(x1,y1, x2,y2) delt_x=x2-x1; delt_y=y2-y1; m,x=size(delt_x);基于 matlab 的坐标正反算 azimuth=zeros(0,m); for i=1:mazimuth_temp=atan2(abs(delt_y(i),abs(。
7、delt_x(i);if delt_x(i)0&delt_y(i)0azimuth(i)=azimuth_temp;elseif delt_x(i)0&delt_y(i)0azimuth(i)=pi-azimuth_temp;else delt_x(i) azimuth=rad2dms(azimuth) distance=sqrt(x2-x1)、2+(y2-y1) 、2); %fprintf(两点间距离 :%8、 3f ; 方位角为 :%8、 3f,distance,azimuth);2) 对文件 data2 、txt 中数据进行坐标反算 , 并将计算结果按照格式存贮在文件data3 、txt。
8、中,Data3、txt格式为 : x1y1 x2y2距离方位角 (dd 、mmss) = uigetfile;基于 matlab 的坐标正反算file = pathname, ;data=importdata(file); distance,azimuth =xy_inv(datadata(:,3),data、 data(:,4);、 data(:,1),data、data(:,2),data、 = uiputfile; = pathname_out, ; fid = fopen(,wt);fprintf(fid, x1y1x2y2距离方位角 (dd 、 mmss)n);fprintf(fid,%8、 2f%8 、 2f%8 、2f%8 、2f%8 、2f%8 、4fn,data、 data(:,1:4),distance,azimuth);fclose(all);3、可能用到的函数开根号 ,sqrt(x)sin(rad)、cos(rad) 、 atan2(y,x),find。