您好,欢迎访问三七文档
控制测量课程设计报告姓名:冉中鑫学号:061412230专业:测绘工程指导教师:高宁目录一、课程设计的目的意义........................................................................1二、课程设计的任务................................................................................1三、课程设计任务的实现过程................................................................23.1课程设计的思路及采用方法.......................................................23.2实现过程中出现的问题及解决办法...........................................2四、课程设计的实验结果........................................................................34.1程序实现过程...............................................................................34.2运行结果.......................................................................................8五、课程设计总结..................................................................................101一、课程设计的目的意义《控制测量学》是一门理论与实践并重的课程,《控制测量学》课程设计是测量数据处理理论学习的一个重要实践环节,是在学生学习了专业基础理论课《控制测量学》课程后进行的一门实践课程,其目的是增强学生对控制测量理论的理解以及基本平差方法的应用;明确一个完整的控制测量系统所包含的内容体系,从而对能够系统、全面地对一实际控制测量问题进行处理;通过课程设计,要求学生熟悉测量数据处理的基本原理方法,灵活准确地应用于解决工程实际问题,并能用所学的计算机基础知识,编制简单的MATLAB计算程序。二、课程设计的任务利用MATLAB编程解决《测量学》课本上第193页第九题。这是一题附合导线坐标推算的题目,要求利用MATLAB调用EXCEL表格编程,实现数据的自动处理。题目如下:附合导线A-B-K1-K2-K3-C-D,如图1所示。其中A,B,C,D为坐标已知的点,K1-K3为待定点。已知点坐标和导线的边长、角度观测值如图所示。试计算各待定导线点的坐标。图12三、课程设计任务的实现过程3.1课程设计的思路及采用方法课程设计中的大体思路就是先手工计算一遍,然后进行编程实现数据处理。具体编程思路如下:1.先进行数据的输入,因为采用调用EXCEL表格的方法读取数据,所以要先编制EXCEL表格,之后再调用数据;2.根据坐标反算起始方位角和检核方位角;3.对读取的转折角进行转换(因为MATLAB不识别′和″,因此只能采取度分秒分别读取的方法),将以度为单位的数据转化为以弧度为单位;4.进行转折角闭合差分配;5.利用改正后的转折角进行坐标增量推算;6.计算坐标增量闭合差,根据路线长度进行闭合差分配;7.根据改正后的坐标增量进行坐标推算;8.输出数据处理的数据结果。3.2实现过程中出现的问题及解决办法在编程过程中或多或少的遇到了一些问题,包括编程方面的和计算原理方面的,遇见的问题大体如下:1.在计算方位角的时候没有注意坐标反算象限角与方位角的转换出现方位角计算错误。解决方法:提供if语句来处理象限角与方位角的转换问题。2.开始的时候没有注意数组的使用方法,造成运行结果总是出出错,而且找不到出错的地方。解决办法:逐行分析程序,发现不确定的进行检验。3.在计算闭合差的时候计算结果总是比真实值大360°,因而造成计算出错。解决方法:从起始方位角开始推算,推算出检核方位角,减去反算出来的方位角,即为角度闭合差。4.在循环过程中因为把变量初始化放在了循环内,导致运行的结果出现错误。解决方法:将变量的初始化在循环之前进行。3四、课程设计的实验结果4.1程序实现过程(1)EXCEL表格制作,如图2图2(2)数据的读取,代码如下:clearall[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','a3');XA=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','b3');YA=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','c3');XB=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','d3');YB=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','e3');XC=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','f3');YC=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','g3');XD=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','h3');YD=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','a6:c15');zzj=cell2mat(rawdata);[N,T,rawdata]=xlsread('fuhedaoxian.xls','sheet1','d5:d15');bian=cell2mat(rawdata);hang=find(isnan(zzj(:,1)));4zzj=zzj(1:hang-1,1:3);hang=find(isnan(bian(:,1)));bian=bian(1:hang-1,1);注:读取EXCEL需要用到xlsread函数,在读取的过程中,对于转折角和导线长划定的范围比较大,因此需要来确定其精确的范围,这就需要用到find函数和isnan函数来实现这个功能。在读取EXCEL表格的时候因为采用的是相对路径,因此,表格需要与程序放在一个文件夹下才能运行。(3)坐标反算,代码如下:fwjAB=atan((YB-YA)/(XB-XA));if(XB-XA)0&&(YB-YA)0fwjAB=fwjAB+pi;elseif(XB-XA)0&&(YB-YA)0fwjAB=fwjAB+pi;elseif(XB-XA)0&&(YB-YA)0;fwjAB=fwjAB+2*pi;endendenddisp('起算方位角为(弧度):');disp(fwjAB);fwjCD=atan((YD-YC)/(XD-XC));if(XD-XC)0&&(YD-YC)0fwjCD=fwjCD+pi;elseif(XD-XC)0&&(YD-YC)0fwjCD=fwj+pi;elseif(XD-XC)0&&(YD-YC)0fwjCD=fwjCD+2*pi;endendenddisp('检核方位角为(弧度):');disp(fwjCD);注:反算过程中要注意象限角与方位角的转换。(4)闭合差计算,代码如下:n=size(zzj);n=n(1);fori=1:nd(i)=zzj(i,1);f(i)=zzj(i,2);m(i)=zzj(i,3);jiao(i)=deg2rad(d(i)+f(i)/60+m(i)/3600);5endj=['请选择左角右角,左角请选择1,右角请选择2:'];t=input(j);ift==2fori=1:njiao(i)=2*pi-jiao(i);endendfwj(1)=fwjAB+jiao(1)-pi;iffwj(1)2*pifwj(1)=fwj(1)-2*pi;elseiffwj(1)0;fwj(1)=fwj(1)+2*pi;endenddisp('角度改正前推算方位角BK1为(弧度):');disp(fwj(1));fori=2:nfwj(i)=fwj(i-1)+jiao(i)-pi;iffwj(i)2*pifwj(i)=fwj(i)-2*pi;elseiffwj(i)0;fwj(i)=fwj(i)+2*pi;endendifi4fprintf('角度改正前推算方位角K%dK%d为(弧度):',i-1,i);elseifi==4fprintf('角度改正前推算方位角K%dC为(弧度):',i-1);elsedisp('角度改正前推算方位角CD为(弧度):');endenddisp(fwj(i));endjc=fwj(n)-fwjCD;注:在闭合差计算时,应该先把角度转换为弧度,再进行计算。考虑到程序的适用性,加入了左右角转换。因为按照课本上的公式计算闭合差最后结果总是比真实结果大360°,因此采用从起始方位角推算出检核边方位角,与其反算方位角进行相减来计算闭合差。(5)方位角计算,代码如下:6fwj(1)=fwjAB+jiao(1)-jc/n-pi;iffwj(1)2*pifwj(1)=fwj(i)-2*pi;elseiffwj(1)0;fwj(1)=fwj(1)+2*pi;endenddisp('改正后方位角BK1为(弧度):');disp(fwj(1));fori=2:nfwj(i)=fwj(i-1)+jiao(i)-jc/n-pi;iffwj(i)2*pifwj(i)=fwj(i)-2*pi;elseiffwj(i)0;fwj(i)=fwj(i)+2*pi;endendifi4fprintf('改正后方位角K%dK%d为(弧度):',i-1,i);elseifi==4fprintf('改正后方位角K%dC为(弧度):',i-1);elsedisp('改正后方位角CD为(弧度):');endenddisp(fwj(i));end注:方位角计算过程中注意最终计算结果是否需要加减360°。(6)坐标增量计算及改正,代码如下:7disp('改正前坐标增量,单位(m):');fori=1:n-1xz(i)=bian(i,1)*cos(fwj(i));fprintf('改正前x增量%d为:',i);disp(xz(i));yz(i)=bian(i,1)*sin(fwj(i));fprintf('改正前y增量%d为:',i);disp(yz(i));endzb=sum(bian(:,1));xzc=sum(xz(1,:))-(XC-XB);yzc=sum(yz(1,:))-(YC-YB);fori=1:n-1;xz(i)=xz(i)-xzc*bian(i)/zb;fprintf('改正后x增量%d为:',i);disp(xz(i));yz(i)=yz(i)-xzc*bian(i)/zb;fprintf('改正后y增量%d为:',i);disp(yz(i));end注:数组变量保存时默认的是n行1列,因此计算总和时能直接使用sum(yz(1,:))这种形式的函数。(7)坐标计算,代码如下:disp('坐标为(单位:m):');xk(1)=XB+xz(1);disp('xk1=');disp(xk
本文标题:控制测量课程设计
链接地址:https://www.777doc.com/doc-2378108 .html