如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
MATLAB软件在测量平差中的应用上海达华测绘公司潘贤亮摘要MATLAB是集数学计算、图形处理和程序语言设计于一体的著名数学软件,利用其丰富的函数资源使得编写平差程序变得更为直观与简洁。本文着重介绍了其在单一附合导线中的应用。关键词测量平差中误差单位权中误差权逆阵闭合差平差值概述MATLAB是美国MathWorks公司自80年代中期推出的数学软件,它优秀的数值计算能力和卓越的数据可视化能力使其很快在数学软件中脱颖而出。时至今日,MATLAB已经发展成为适合多学科、多种工作平台的功能强劲的大型软件,已成为许多高校线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析等高级课程的基本教学工具,MATLAB也被广泛地应用在工程方面。MATLAB之所以有那么广阔的市场,是因为它有其不同于其它语言的特点。1、语言简洁紧凑,使用方便灵活,库函数极其丰富,使人们从繁琐的程序代码中解放出来。MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。比如用BASIC和C等语言编写程序,尤其涉及到矩阵运算和画图时,编程就会很麻烦。若用它们求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法编写一个程序块来求解方程,最后再输出计算结果。解线性方程的麻烦在于要对矩阵的元素作循环和选择稳定的算法以及代码的调试,编程过程相当繁琐,并且容易出错。而用MATLAB解算则十分容易。例如:Ax=b,其中:A=[253452;791240;683172],b=[9;14;3]解为x=A\b。可见,MATLAB的程序极其简短,并且MATLAB可直接对矩阵求逆、转置、求对角阵等。2、运算丰富。MATLAB提供了和C语言几乎一样多的运算符,灵活使用运算符将使程序变得更为简短。3、MATLAB既有结构化的控制语句(如循环语句),又有面向对象编程的特性。4、语法限制不严格,程序设计自由度大。例如,在MATLAB里,毋须对矩阵预定义就可使用。5、程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。MATLAB还有很多的特点,在此不再作论述。用MATLAB软件编写测量平差程序,将使编程变得十分简单,也很直观,效率大大提高。下面,我将通过编写单一附合导线的平差程序来体现MATLAB软件在测量平差中实用性。程序编写图(一)如图(一)所示的附合导线,导线的观测角数为n,观测边数为n-1,导线的待定点数为n-2,多余观测数r为3,故应列出3个条件方程。一个是由起始坐标方位角αAB推到未尾坐标方位角αCD的坐标方位角条件;另外两个是由A点坐标XA,YA推到C点坐标XC,YC的纵横坐标条件。方位角条件(k≤n)纵横坐标条件式中,ωx,ωy为条件式闭合差,其计算公式为-ωx=xn-xc-ωy=yn-ycxi,yi是由观测值计算的各导线点的近似坐标,一般情况下,观测角的改正值Vi以秒为单位,ωx,ωy以厘米为单位,观测边的改正值也以厘米为单位,若x,y以米为单位,则ρ取2062.65,从而使全式单位一致。应用MATLAB软件编写平差程序如下:%计算导线方位角函数:functionj=fwj(jab,B,n)j(1)=du(jab)+du(B(1))-180;fori=2:nj(i)=j(i-1)+du(B(i))-180;ifj(i)>360j(i)=j(i)-360;endifj(i)<0j(i)=j(i)+360;endend%度分秒化成度的函数:functiond=du(B)d=fix(B)+(fix((B-fix(B))*100))/60+(B*100-(fix(B*100)))/36;%计算导线点坐标的函数:function[x,y]=xy1(n,s,j,xa,ya)x=[xaones(1,n-1)];y=[yaones(1,n-1)];fori=2:ndx(i-1)=s(i-1)*cos(j(i-1)*pi/180);dy(i-1)=s(i-1)*sin(j(i-1)*pi/180);x(i)=x(i-1)+dx(i-1);y(i)=y(i-1)+dy(i-1);end主程序:n=input('pleaseinput导线观测角数:');fori=1:nB(i)=input('角度:');endfori=1:(n-1)s(i)=input('边长');endmb=input('测角中误差mb:');mc=input('测边加常数误差(以cm为单位):');ml=input('测边乘常数误差:');xa=input('XA:');ya=input('YA:');x