基于matlab的坐标正反算(共7页).docx

上传人:飞****2 文档编号:14325553 上传时间:2022-05-04 格式:DOCX 页数:7 大小:19.02KB
返回 下载 相关 举报
基于matlab的坐标正反算(共7页).docx_第1页
第1页 / 共7页
基于matlab的坐标正反算(共7页).docx_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《基于matlab的坐标正反算(共7页).docx》由会员分享,可在线阅读,更多相关《基于matlab的坐标正反算(共7页).docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上测量程序设计实验报告实验名称:坐标正反算实验三 坐标正反算一、实验目的编写坐标正反算程序,并对格式化文件数据进行计算,验证程序。二、实验内容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-mimute)*60;dms

2、 = degree+mimute/100+second/10000;度分秒转度: 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*180.0/pi; % l=fix(a) % b=(a-l)

3、*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); second = (jiaodu-degree)*60-mimute)*60; dms = degree+mimute/100+second/10000; if(rad function x2,y2 = xy_direct(x1,y1,distance, azimuth)x2=x1+distance.*cos(azimu

4、th*pi/180);y2=y1+distance.*sin(azimuth*pi/180);end2) 对文件data1.txt中数据进行坐标正算,并将已知点和计算点坐标按照格式存贮在文件data2.txt中,data1.txt格式为: x1 y1 距离 方位角(dd.mmss)data2.txt格式为: x1 y1 x2 y2 filename,pathname=uigetfile; file=pathname,filename; data=importdata(file); %x1,y1=data.data(:,1,2); azimuth=dms2degree(data.data(:,4

5、); distance=data.data(:,3); %x2,y2=xy_direct(x1,y1,distance,azimuth);x2,y2=xy_direct(data.data(:,1),data.data(:,2),distance,azimuth); filename_out,pathname_out=uiputfile; fileout=pathname_out,filename_out; fid=fopen(fileout,wt); fprintf(fid,x1 y1 x2 y2n); fprintf(fid,%8.2f %8.2f %8.2f %8.2fn,data.da

6、ta(:,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); azimuth=zeros(0,m); for i=1:m azimuth_temp=atan2(abs(delt_y(i),abs(delt_x(i); if delt_x(i)

7、0&delt_y(i)0 azimuth(i)=azimuth_temp; elseif delt_x(i)0&delt_y(i)0 azimuth(i)=2*pi-azimuth_temp; elseif delt_x(i)0 azimuth(i)=pi-azimuth_temp; else delt_x(i)0&delt_y(i) azimuth=rad2dms(azimuth) distance=sqrt(x2-x1).2+(y2-y1).2); %fprintf(两点间距离:%8.3f ;方位角为:%8.3f,distance,azimuth);2) 对文件data2.txt中数据进行

8、坐标反算,并将计算结果按照格式存贮在文件data3.txt中,Data3.txt格式为: x1 y1 x2 y2 距离 方位角(dd.mmss) filename,pathname = uigetfile;file = pathname, filename;data=importdata(file); distance, azimuth = xy_inv(data.data(:,1),data.data(:,2),data.data(:,3),data.data(:,4); filename_out,pathname_out = uiputfile;fileout = pathname_out, filename_out;fid = fopen(fileout,wt);fprintf(fid, x1 y1 x2 y2 距离 方位角(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专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁