MATLAB编程与应用实验报告(坐标正反计算)
时间:2020-11-25 20:50:25 来源:勤学考试网 本文已影响 人
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实验结论正确.
成 绩:
指导教师签名:
批阅日期: