- 62
- 0
- 约3.97千字
- 约 6页
- 2021-06-20 发布于湖南
- 举报
基于 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-mimute)*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*180 、0/pi;
% l=fix(a)
% b=(a-l)*60 、0
% m=fix(b)
% a=l+m/100 、0+(b-m)*0 、006
% if(rad0)
% 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(rad0)
dms=-dms;
else
dms=dms;
end
return
function [x2,y2] = xy_direct(x1,y1,distance, azimuth)
x2=x1+distance 、*cos(azimuth*pi/180);
y2=y1+distance 、*sin(azimuth*pi/180);
end
2) 对文件 data1 、txt 中数据进行坐标正算 , 并将已知点与计算点坐标按照格式
存贮在文件 data2 、txt 中,
data1 、txt 格式为 : x1 y1 距离 方位角 (dd 、mmss)
data2 、txt 格式为 :
x1 y1 x2 y2
[]=uigetfile;
file=[pathname,];
data=importdata(file);
基于 matlab 的坐标正反算
%[x1,y1]=data 、data(:,[1,2]);
azimuth=dms2degree(data 、data(:,4));
distance=data 、data(:,3);
%[x2,y2]=xy_direct(x1,y1,distance,azimu
原创力文档

文档评论(0)