MATLAB编程与应用实验报告(坐标正反计算)

来源:工作范文网 时间:2020-11-26 11:34:16

PAGE

PAGE 1

坐标正反计算

实 验 报 告

所属课程名称 MATLAB编程与应用

实 验 地 点

实 验 日 期 2019.12.19

班 级

学 号

姓 名

指导老师

一、实验目的:

坐标计算主要包括坐标正算和坐标反算,坐标正反计算是测量计算的基本公式,通过编写相应函数来实现对标量和向量(或矩阵)输入参数的坐标正算及坐标反算。

二、实验内容:

【实验过程及成果】(程序说明、实验代码、实验数据、实验结果)

程序说明

坐标正算:用if循环判断strcat横向连接路径名pathname和文件名filename中文件是否为空函数isempty,uigetfile实现文件的打开对话框来调用需要的数据文件。Dlmread来读取已知点数据,读取已知点编号yzd_n、个数yzd_count、X、Y坐标yzd_X、yzd_Y、水平距离yzd_Dis、方位角yzd_fwj,最后根据正算公式计算出坐标X、Y。

坐标反算:x1,y1起点坐标,x2,y2终点坐标,dis距离,azi方位角,通过反算公式计算方位角和距离。

实验代码

>>function [X,Y]=ZBZS(pathname)%坐标正算代码

if(nargin<1)

[filename,pathname]=uigetfile(...

{'*.txt;*.dat;','data Files (*.txt,*.dat)';

'*.txt','yzd-files(*.txt)';'*.dat','survey data(*.dat)';

'*.*','All-file.s(*.*)';},'Pick a file');

if(isempty(pathname))

return;

end

pathname=strcat(pathname,filename);

end

yzd=dlmread(pathname);

yzd_n=yzd(:,1);

yzd_count=length(yzd_n);

yzd_X=yzd(:,2);

yzd_Y=yzd(:,3);

yzd_Dis=yzd(:,4);

yzd_fwj=yzd(:,5);

X=yzd_X+yzd_Dis.*cos(yzd_fwj);

Y=yzd_Y+yzd_Dis.*sin(yzd_fwj);

end

>>function [dis,azi]=ZBFS(x1,y1,x2,y2)%坐标反算函数

dx=x2-x1;

dy=y2-y1;

tx=atan2(dy,dx);

dis=sqrt(dx.^2+dy.^2);

if(tx<0)

azi=tx+2*pi;

else

azi=tx;

end

end

实验数据

>>正算:

1 3628.022 6183.864 371.61 81.5725

2 4354.543 3215.654 432.12 120.34532

>>反算:

x1=[1 1 1 1 1];y1=[1 2 3 4 5]

x2=[2 2 2 2 2];y2=[5 4 3 2 1]

实验结果

【实验小结】(收获体会

在平面测量坐标系中,已知一点a的坐标(Xa,Ya)及该点到另一点b的水平距离(Dab)和方位角(Aab),求另一点的坐标(Xb,Yb)是坐标正算,已知两点a和b的坐标(Xa,Ya)、(Xb,Yb)反求这两点之间的方位角Aab和距离Dab称为坐标反算。学习此次实验学会了实现坐标正反计算,了解了坐标基础计算方法和相应的程序编写。

三、指导教师评语及成绩:

评 语

评语等级

及格

不及格

1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强

2.实验方案设计合理

3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)

4实验结论正确.

成 绩:

指导教师签名:

批阅日期:

  • 下载文档
  • 收藏
  • 0