下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 基于MATLAB的水准网和测边网平差程序设计

基于MATLAB的水准网和测边网平差程序设计.doc

基于MATLAB的水准网和测边网平差程序设计

zhao翠翠u
2017-10-11 0人阅读 举报 0 0 暂无简介

简介:本文档为《基于MATLAB的水准网和测边网平差程序设计doc》,可适用于高等教育领域

基于MATLAB的水准网和测边网平差程序设计东华理工大学毕业设计摘要基于MATLAB的水准网和测边网平差程序设计摘要MATLAB是目前在研究机构广泛应用的一种数值计算及图形工具软件它的特点是语法结构简明、数值计算高效、图形功能完备特别适合非专业编程员完成数值计算、科学试验处理等任务。以往的测量数据处理方法需要编制特定的处理矩阵运算程序而且程度复杂难度大。本文介绍一种基于MATLAB的水准网和测边网的程序设计方法与其它算法语言相比具有编程简单运算速度快的特点。文中分别阐述了水准网和测边网程序的理论基础、实现步骤和运行结果。通过实例的分析总结出利用MATLAB对测量数据处理有很大的应用价值它缩短了编程的时间提高工作效率。关键词:MATLAB水准网测边网程序设计东华理工大学毕业设计摘要ABSTRACTMATLABisonespeciesofnumericalvaluescalculationandgraphictoolssoftwarewhichiswidelyusedtoapplyatresearchinstitutionsatpresentTheparticularitiesare:concisegrammarstructure、highlyefficientinnumericalvaluescalculating、completefunctionofgraphs、especiallyitisadaptedtoevildoingprofessionalprogrammertoaccomplishthetasksthatarenumericalvaluescalculatingandscientificexperimentstreatingTheancientmethodsofmeasureddataprocessingneedestablishingspecialproceedingsoftreatingmatricesoperation,moreover,itiscomplexandgreatlydifficultThisarticleintroducesoneprogrammingmethoddealingwithlevelingandmeasuringedgenetworkbasedonMATLABComparedwithotheralgorithmlanguningresultsatlevelingandmeasuringedgenetworkWiththeanalysisofexamples,ithasprodigiousapplicationvalueinmeasureddataprocessingbyuseofMATLABMoreover,itshortensprogrammingtimeandimprovesworkingeffectivenessKeywords:MATLABlevelingnetworkmeasuringedgenetworkprogramming东华理工大学毕业设计目录目录绪论MATLAB软件简介(MATLAB在测量平差中的应用测量平差原理的概述平差程序总体方案程序的功能水准模型网的间接平差“权”值的确定水准路线的平差计算精度评定水准网间接平差程序信息设计水准网程序与使用说明水准网程序流程图水准网程序的使用案例测边网平差程序设计数学模型误差方程和法方程的组成边长观测的权解算法方程精度评定测边网平差信息设计主要的技术要求(利用MATLAB的绘图语句绘制网图测边网程序和使用说明程序代码说明:程序的使用算例结论致谢参考文献附录一附录二附录三东华理工大学毕业设计绪论绪论作为一名测量技术人员如果不掌握一门PC机编程语言与便携计算工具要想提高测量工作的效率几乎寸步难行。测量需求的多样性与复杂性造就了测量计算鲜明的个性化特点这就是在商业测量计算软件高度发达的今天掌握一种实用的程序语言进行编程计算仍有广泛的市场需求的重要原因。当今较流行的计算机程序语言基本上都是基于Windows的例如TurboPascal,VisualBasic,VisualC,BorlandC等这些程序语言的优势是基于对象及可利用Windows丰富的系统资源应用它们可以开发出界面非常丰富和友好的应用程序其劣势主要有以下几点:Windows程序都非常庞大学习并熟练掌握它们并非易事。虽然市场上已有的多种专用的测量平差软件都是采用C语言开发的但这些软件价格都比较贵而且都带有加密狗一次只能供一个用户使用。出于商业目的开发商不会公开程序源代码这为修改程序功能以适应用户的特殊需求带来了不便。在测量生产中经常需要根据工程的实际情况进行一些个性化的数值计算工作这些数值计算工作无固定模式这就需要求测量技术人员最好能熟练掌握一种适用于数值计算的程序语言以便提高测量计算的效率。C语言的数值计算语句不够丰富例如在测量平差计算中经常需要进行的矩阵运算尤其是解法方程的矩阵求逆不能直接使用语句实现而必须应用计算机算法编程实现。如果不是基于商业软件开发只为满足实际测量工作计算需要则C语言的劣势就变成了MATLAB语言的优势。东华理大学毕业设计MATLAB软件简介MATLAB软件简介MATLAB是从Matrix(矩阵)和Laboratory(实验室)各取前个字母组成的,意思是矩阵实验室,是美国MathWorks公司于世纪年代中期推出的一种交互式、面向对象的科技应用软件,是一个为科学和工程计算而专门设计的高级交互式软件包。MATLAB集成了图示与精确的数值计算,是一个可以完成各种计算和数据可视化的强有力工具,成其优秀的数值计算能力和卓越的数据可视化能力使其很快在数学软件中脱颖而出,为以矩阵运算为主要工作方式的线性代数、概率论和数理统计、自动控制、数字信号处理、动态系统仿真等领域教学和科研工作者的有力武器。随着该软件自身的发展及市场的需求,其功能日趋完善,前其最高版本版已经推出,随着版本的不断升级,它的数值计算及符号计算功能得到了进一步完善。MATLAB是以矩阵作为数据操作的基本单位,矩阵的生成、运算、转置、求逆等非常简单。在MATLAB环境中,不需要对创建的变量对象给出类型说明和维数,所有的变量都作为双精度数来分配内存空间,MATLAB将自动地为每一个变量分配内存。MATLAB语言起源于矩阵运算,并已经发展成为一种高度集成的计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB系统主要包含部分的内容:MATLAB工作环境、Mablab数学函数库、MATLAB语言体系、句柄图形、MATLAB应用程序接口(API)。MATLAB系统主要功能包括:数值计算功能、符号计算功能、数据分析和可视化、文字处理功能、SIMULINK动态仿真功能。同时,MATLAB又是开放的,除了内部函数之外,所有的MATLAB主包文件和各工具包文件都是可读可改的源文件,用户可以作为参考掌握其用法,并可对其修改以适应自己的需要,也可加入自己编写的文件构成新的工具包。例如,随着GPS的广泛应用,OrionDynamicsandControlCorporation、ConstellIncGPSSoftLLC、NavsysCorporation等多家公司都相应开发出了适于GPS数据处理的MATLAB工具箱。MATLAB是一个集数值计算、图形管理、程序开发于一体的功能十分强大的系统。将MATLAB应用于测量数据的处理是一件非常有意义的工作。Mohamed等曾成功地在MATLAB系统中利用白滤波技术研究动态解算GPS载波相位信号的模糊度问题。因为测量数据的处理特别是测量平差主要应用矩阵运算,而MATLAB又特别易于做矩阵运算,因此,研究开发基于MATLAB的测量平差方法具有极好的应用价值。东华理大学毕业设计MATLAB在测量平差中的应用(MATLAB在测量平差中的应用测量平差数据处理主要是基于矩阵的运算,常用的矩阵运算主要是矩阵的生成、转置、求逆和矩阵求广义逆等。在MATLAB环境中,不需要对创建的变量对象给出类型说明和维数,所有的变量都作为MATLAB中的M文件的语法与其他的高级语言类似,是一种程序化的编程语言,同时也是一种解释性的编程语言,即逐行解释运行程序,使程序计算更为简捷,而且对于平差原理理解和掌握变得更容易。另外,MATLAB语容易调试,言与数学语言比较接近,更容易掌握和理解。测量平差原理的概述测量平差的函数模型有条件方程和观测方程。以条件方程为函数的模型的最小二乘平差称为条件平差在条件方程中根据需要如果还设有一定数量的未知数则称为附有参数的条件平差以观测方程为函数模型的最小二乘平差称为间接平差如果观测方程中的某些参数不独立则这些不独立参数必然存在一些条件称这种平差模型为附有条件的间接平差。本文的两个程序都采用间接平差模型。对于一个实际平差问题,根据所选参数的个数、选什么量为参数以及参数之间是否函数独立,经过仔细推敲可以发现附有条件的间接平差模型本身就是各种经典平差模型的概括模型,其余的经典平差模型,如条件平差模型、间接平差模型、附有未知数的条件平差模型和附有限制条件的条件平差模型都是它的特例。间接平差的公式汇集:间接平差模型为,VBXl,,,(,),TVPV,min,,系数矩阵B满秩即rank(B)=t法方程及解为:,TTNxfNBPBfBPl,,,,,(,)()bbebbe,xNf,()bbe参数的平差值:()XXx,LLV,观测量的平差值:()TVPV单位权中误差:(),,,nt,平差参数的协方差阵:()DN,,bbXX东华理大学毕业设计MATLAB在测量平差中的应用T,平差函数的协方差阵:()QFNF,,bb,,平差程序总体方案MATLAB号称为全球工程师的共同语言其语法和C语言相似但它有强大的数值计算和绘图功能这使之在工程应用方面的计算更出色本文就基于这种程序设计语言环境设计一个控制网平差程序。该程序包含了一个高程控制网平差程序和测边网平差程序。本程序适用于各种等级的高程网和测边网程序在设计过程中始终考虑数据的储存量。因而本程序不储存误差方程的系数和常数项对待定点数较多的平差网组成法方程的系数矩阵是个稀疏矩阵如待定点的编号恰当法方程的系数会集中在主元系数的两侧形成带状。为减少法方程系数的储存量只要按行储存下三角阵或按列储存上三角阵中第一个非零系数起的系数就是通常叫做维变带宽储存方法。东华理大学毕业设计水准网平差程序水准网平差程序程序的功能本程序适用于二、三、四等水准网平差计算平差的水准网可以是独立的、也可以是附合网其主要功能是完成水准网的平差计算和精度评定计算。平差计算采用间接平差法以归心的观测值为高差以未知点高程为未知参数。精度评定计算包括计算单位权中误差和每个待定点的高程中误差。水准模型网的间接平差“权”值的确定当在相同的条件下进行水准测量时,其精度是相同的,因而观测结果的可靠性也是同样的。但如果在不同的条件下进行水准测量时,高程的精度就有所不同,此时称为不等精度观测,所求出的未知量的值、高程的最或是值并对其精度进行评定时,就需要“权”了。由于观测的不等精度,因而观测值的可靠程度不同,求未知量的最或是值时,这样的一个因素就必须考虑了,这个因素是:可靠性大的某观测值,其精度高,对测量的最后结果的影响也就越大。此时用“权”值来表示观测值的可靠程度,那么,“权”值愈大,观测值的可靠程度就愈高。另外,在观测过程中,观测值的中误差愈小,观测结果愈可靠,它的“权”值就愈大。因而,根据中误差来确定“权”值是非常适当的。设以Pi表示观测值Li的“权”,m为中误差,则“权”值的定义为:()式中:A为任意的正常数,在一组观测值中为一个定数。在实际测量中,通常是观测值的中误差事先并不知道,因而必须先确定观测值的“权”,然后才能求出未知量的最或是值。此时可以利用距离(S)或测站数(N)来确定观测值高程的“权”。根据偶然误差传播定律,各观测点高程Hi的中误差mi由测站数Ni确定时,则有:()mmN,ii式中:m为一组观测值的中误差,为一个定数由()、()两式可得:()东华理大学毕业设计水准网平差程序同样可得出:()s式中:C为定数,为测距i)、()两式可以得出这样一个结论:当测站观测高差等精度时,观测总高差由(的“权”与测站数或距离成反比。水准路线的平差计算(附合路线的平差计算假定在图示的A、B两水准点之间布设一条水准路线,A、B两水准点的高程HHnn为已知,分别设为、、、、C为中间水准点。假定观测了所有的点的高ABH程,现拟求C点的高程的最或是值。CHhh可由水准路线AC、BC分别观测的高差Δ、Δ计算得出,由此而CACBC得到的观测高程分别设为Hc、Hc,其值为:HhHhHc=ΔHc=ΔAACBBC当Hc、Hc在不等精度条件下观测得出时,它们的“权”也不同,分别设为Pc、HPc,这样C点的高程的最或是值为:CPHPH,ccccH,()cPPccHh根据A点的高程,AC水准路线观测的高差Δ以及BC水准路线观测AAChH的高差Δ,可推算出B点的观测高程为:BCBH,Hhh=ΔΔBAACBC水准路线AB的高程闭合差为:H,HfHH,==()BBhccHHf由()式得到:=cchCCNNP,P,由()式得到:(、分别表示水准路线AC、BACBCcc、NNACBCNNN,C的测站数,水准路线AB的测站数)ABACBC东华理大学毕业设计水准网平差程序将上述表达式代入()式中,得到:()SSS,SSS如果以水准路线的距离、的距离、的距离()ACBCABABACBCBCBCAB来确定高程观测值的“权”值时,同样可以得到:()图水准路线图(闭合路线的平差计算闭合路线的平差计算原理与附合路线相同,因而()、()两式的结论适用于闭合路线的平差计算。()具有一个结点的水准网的平差计算如图所示为具有一个结点的水准网,B,C,D,为已知高程水准点,BA,CA,DA,为水准路线,则接点A的高程最或是值为:nPH,AiAiPHPHPHAAAAAAi,H,,()AnPPPAAAP,Aii,HHH,,式中分别为水准路线BA,CA,DA,计算A的观测高程,各高AAAPPP,,程相应的“权”值为AAAHHHHH,,设的算术平均值为,各高程观测值与的差值分别为δA,ABAAAδA,δA,,则有:东华理大学毕业设计水准网平差程序()将()式代入()式得到:()当以测站数和距离来确定“权”值时,()分别可以转化为:()()上述结论也可应用于小三角水准网平差计算。精度评定TVPV单位权中误差:(),,,nt,平差参数的协方差阵:()DN,,bbXXT,平差函数的协方差阵:()QFNF,,bb,,水准网间接平差程序信息设计(数据文件的组织下面给出一个水准网输入数据文件的例子:(已知点个数、未知点个数、观测值个数)(点号)(已知点高程)(起点点号、终点点号、高差观测值、距离观测值)东华理大学毕业设计水准网平差程序(其中编号数组未知点在前已知点在后)(水准网平差变量约定表变量约定表变量名说明ed已知点个数dd未知点个数sd总点数gd观测值个数pn点号h已知点高程be起点点号en终点点号h高差观测值s距离观测值水准网程序与使用说明水准网程序流程图图水准网流程图程序的全部代码见附录一。水准网程序的使用本程序使用MATLAB的矩阵功能计算法方程在运行程序前首先要有其始数据。其始数据是一文件的形式保存在磁盘中文件的格式在上文已经说明过编好文件后东华理大学毕业设计水准网平差程序以后缀名为TXT的形式保存。执行时在MATLAB命令窗口直接键入文件名即可。案例如下图水准网、、为已知点、、为待定点已知点的高程分别为。观测高差和观测路线长度分别为:h=,h=,h=,h=,h=,h=s=,s=,s=,s=,s=,s=图水准网图首先编数据文件命名为datatxt数据的格式如下:进入MATLAB界面在命令窗口直接输入level运行程序。弹出如下窗口东华理大学毕业设计水准网平差程序图数据读入文件选择datatxt即可运行出如下结果:图计算结果在图中分别输出了高程的平差值及精度。结果是一文本的形式保存用户可对它进行编辑。东华理工大学毕业设计测边网平差程序设计测边网平差程序设计数学模型误差方程和法方程的组成控制网中的观测值为边长误差方程非零项最多为个所以误差方程系数矩阵采用压缩格式进行储存。可采用以下的方法:A(m,n)=>A(m,)其中m为观测值个数n为未知点个数的两倍。改进后的A阵格式为A=(编号系数编号系数编号系数常数项)i共列。即只存储误差方程的个非零参数系数。N法方程系数阵为对称阵在存储时只需要存其上三角部分就可以了。其占A用的空间为:nn()sum,现有A阵:A=(编号系数编号系数编号系数常数项)其中偶数项为系数加上最后的A为常数项在组成法方程时从A开始分别与剩下的偶数项以及常数项相乘然后再用A与剩余的项相乘一直到A为止这TNAPA,样就完成了的过程。需要注意的是:若AAAA小于零则表A示该点已知点不参与法方程的组成。边长观测的权边长观测的精度一般与其长度有关定权公式为,pin,,(,,,)si,sis,式中为所测边长的方差为任意选定的单位权方差。,isip为了定权必须已知测边的先验方差但精确的已知是十分困难的一般采,ssii用厂方给定的测距仪精度即,,abSsiiS式中a为固定误差(单位mm)b为比例误差(单位:ppm)为边长(单i东华理工大学毕业设计测边网平差程序设计位km)。解算法方程由于法方程是对称正定阵因此可采用改进的平方根法进行解算。平方根法是对称正定矩阵非常有效的三角分解方法设A为n阶方阵如果其所有顺序主子式均不为零则其存在唯一的分解式:A=LDRrr,,,,nd,,,,,,,,l,,,,其中L=D=R=,,,,,,r,,,nn,d,,,,n,,,,,,ll,nnn,,,,,T由于此住A对称性得又根据A阵正定的性质可证明D均为正数。LR,现在设,,dd,,,,d,,,,,,D==,,,,,,,,,,,,dddn,,dd,,,,DDD,即TTTTALDLLDDLLDDLLL,,,,()()则为方便记为TALL,称为Cholesky分解即正定对称矩阵的平方根分解法。解等阶于求解两个三AXb,角方程组:TLXY,和LYb,在用平方根分解法计算时需要进行n次开方运算。为了避免开方可以直接采TALDL,用对称正定的分解式对平方根法进行改进。从而解方程组可以按如AXb,TT()LDLXb,ALDL,下步骤进行:把A分解成则变成即等价于AXb,LYb,,,T,LXDY,,由此可以解出X和Y。这称为改进的平方根法在计算中避免了开方运算。平方根法和改进的平方根法的计算量和存储量比消去法节约近一半而且不需要选主元能得到比较精确的数值解。东华理工大学毕业设计测边网平差程序设计法方程用改进平方根法解算的过程如下:()分解:T,CSDS,SSS,,,,n,,,,其中,SD,,,,,,,,,,SSmnmn,,,,,,,,,,,,ccSSs,,,,nn,,,,,,s,,,,,,,,,,,,,ccSnnnmn,,,,,,ss,,,nn,n,,ss,,,nn,,sc,jjssssjj,,csscj,,,,jjjjssssssssssjjjj,,csscj,,,,,jjjjssss纯量计算公式为ci,,ij,i,s,ss,jkikjcij,,,,,ij,sk,kk,()求逆,RS,rr,,n,,R,,,,,rnn,,由RS=I得rrrsss,,,,,,nn,,,,,,rrssnn,,,,,,,,,,,,,,,,,,,,rs,,nnnn,,,,东华理工大学毕业设计测边网平差程序设计纯量计算公式:r,iisiirsr,,s,rsrs()r,s,,,rsrs()()(nnnnr,nsnnrsr,,s,rsrs()r,s,,()(),rsrs(nnnnr,nsnn通式为,r,ii,sii,,,j,rs,ikkj,,krji,,,,,ijs,ij,()求积TTT,,,,QSDSSDSRDR,,,()()rrsr,,,,,,n,,,,,,TQRDR,,,,,,,,,,,,,,rsrrnnnnnnn,,,,,,srsrsrr,,,,nn,,,,srsrrrnnnnnn,,,,,,,,,,,,,srrrrnnnnnnnnn,,,,东华理工大学毕业设计测边网平差程序设计精度评定m()坐标改正数以及单位权中误差的计算使用上三角一维数组形式存储坐标改正数的公式为:in,,xqwqwin,,,,,,,,,ijijijjjj,,其中n=dd,x的单位是cmi:平差值XXx,写成分量的形式为XXx,,iii如果近似坐标的误差较大或网形较大平差的结果不会精确这时就需要进行迭代平差直到两次平差间互差在允许值内。由测量平差理论:TVPV,,nt,同样可得到单位权中误差:PVVm,mn,其中mn观测个数减去未知点个数mmmmnddSTST,,,,,方向观测的测站数,,PVVpllx,()点位误差椭圆误差椭圆表示了网中点或点与点之间的误差分布情况如图。在测量工作中常用的误差椭圆对布网方案作精度分析。绘制误差椭圆只需要三个数据:椭圆长半轴a短半轴b和主轴方向φ,其求法为,a,,,,,,,(())xyxyxy,,,xy,,tan,,,,,xy,b,,,(()),,,,,xyxyxy,,东华理工大学毕业设计测边网平差程序设计图误差椭圆的表达顾及方差与权倒数的关系得,,aQQQQQ(()),,xxyyxxyyxy,Q,xy,tan,,,QQ,,xxyy,bQQQQQ(()),,,xxyyxxyyxy,,mmm根据上述的理论我们实际要求的是、、。只要得到了这些元素yixiyixi就能依照上面的公式来求得椭圆的元素了。测边网平差信息设计外业测量的数据首先应进行预处理包括测站平差、归心计算、观测值归化到椭球面的改正、椭球面归化到高斯平面的改正等然后将预处理后的数据输入到以后缀名为TXT的文本文件中该数据文件的组织格式如下所列:表数据组织格式次序内容已知点个数ed,未知点个数dd,控制参数点号pn。先输入已知点编号各点输入顺序无要求已知点坐标,x,y,x,y,x,y„测量边的个数m边长的固定误差ms,边长的比例误差pp。单位分别是:cm和×边长的起始点号e,终点点号d,边长sid。每一条边一行依次列出推算近似坐标的路线经过的边数推算近似坐标的起算已知点坐标(按顺时针)推算近似坐标的路线经过的边的边号东华理工大学毕业设计测边网平差程序设计主要的技术要求表测边网的技术要求等级平均边长(km)测距中误差(mm)测距相对中误差二等万三等万四等万一级小三角万二级小三角万(利用MATLAB的绘图语句绘制网图网形的绘制由于网形图与误差椭圆绘制在同一个图形上因此必须对误差椭圆进行放大在本文的程序中使用了inputdlg对话框输入语句其中确省的放大倍数为。在程序中使用了edddpnmxyedsidaibifi等变量其意义与前面的变量相同。对绘制的网图有效放大和缩小功能即点击鼠标左键放大图形点击右键缩小图形利用MATLAB菜单本身的功能可以将该图形输出为各种图形文件格式。误差椭圆的绘制无论多么复杂的图形其基本单元还是点和线。换句话说只需要利用基本元素的点或线通过各种组合也能画出复杂的图形。MATLAB中没有提供直接绘制椭圆的命令因此可以直接利用连线来画椭圆。测量中描述误差椭圆用长半轴A短半轴B和方位角FI三个量。在如图的x′Oy′中直角坐标系中椭圆的标准方程为,,,,xy,()AB如果以角度i为变量则椭圆的标准参数方程为x,,,cosi,(),y,,,sini,,设在测量坐标系xOy中椭圆长半轴的方位角为则有cossin,,,xx,,,,,,,,(),,,,,,sincosyy,,,,,,,,,用参数方程代入得到东华理工大学毕业设计测边网平差程序设计xAiBi,,coscossinsin,,,,()yAiBi,sincoscossin,,,测量坐标系与MATLAB或AUTOCAD绘制的数学坐标系的x,y坐标轴不同绘图时需要调换xy坐标。在上式中i取不同的值就有一组(xy)只需要将这些点连接起来就可以绘出一个椭圆。图误差椭圆的参数方程测边网程序和使用说明使用本程序的全部数据都按规定的格式编辑成数据文件储存在磁盘上。数据文件的编辑取决于平差网型和观测值的编号为此先绘制平差网的略图在图上标明各项数据的信息。以下就测边网的点号边编号输入数据输出成果运行程序等问题作简明说明。点号和观测边的编号已知点和待定点的编号为pn(取三为数)已知点在前未知点在后其顺序无要求。但为了减小法方程系数的带宽应使相临的待定点编号的差数尽可能小。平差网的编号见图。推算近似坐标的路线近似坐标的路线是用户在测边网略图上指定出来的。如图的箭头就是表示推算路线。路线的两个起算点必须为已知点从两个已知推算出的第一个未知点开始选择观测边由观测边和已求得的近似坐标或已知坐标推算出观测边所对的未知点。本程序是按推算的三个点A、B、P顺序为顺时针。东华理工大学毕业设计测边网平差程序设计图测边网略图数据的输入()简单变量为了在程序运行中数据的传递定义了一些全局变量,参见表。()数据文件外业测量的数据首先应进行预处理包括测站平差、归心计算、观测值归化到椭球面的改正、椭球面归化到高斯平面的改正等然后将预处理后的数据输入到以后缀名为TXT的文本文件中该数据文件的组织格式如表。输出成果本程序的计算成果是以文件的形式输出到文本文件中用户可以在文本中查看和编辑。程序代码说明:程序的总体框架图测边网总体流程图东华理工大学毕业设计测边网平差程序设计(数据读入块本模块的功能是打开一个*txt的数据文件同时生成一个*outtxt的文本文件记录用户数据和输出成果用。程序调用fscanf函数把文件中的数据赋值给相应的变量这些变量是后面计算的数据依据。(近似坐标的计算测边网的观测数据是边长所以在近似坐标的计算时只能用测边交会计算。以及A、B两点坐标及A、B到P点的距离b、ac为A、B两点的距离A、B、P三点按顺时针排列。则P点的坐标计算公式如下:bca,efbe,,,,cXXef,,cossin,,,PAABAB,YXef,sincos,,PAABAB,计算近似坐标的流程图入图。图计算近似坐标流程图(误差方程和法方程的形成程序中用数组a来存储误差方程的编号和系数a(i,)存储常数项w和c分别存储法方程系数和法方程常数。(解算法方程。函数流程图如图。函数的代码见附录三。(精度评定本模块包括坐标改正数、单位权中误差和误差椭圆的计算。程序中定义了dxy(坐PVVpllx,,,标改正数)、pvv(即存储)、uw(单位权中误差)等。同时计算出误差椭圆的三个参数长半轴ai短半轴bi和主轴方向fi。东华理工大学毕业设计测边网平差程序设计图平方根法求逆程序框架图(控制网的绘制程序中调用inputdlg函数来打开一个对话框来输入误差椭圆的参数用text函数来对点号标注用ploth函数及控制参数绘制线和误差椭圆。程序的完全代码见附录二。程序的使用算例有测边网如图所示。网中A、B、C、C点已知其余为未知点现用某测距,,,()mmS仪观测了条边长测距精度。起算数据和观测数据如下:s表已知点坐标XYXY点名点名CADB表观测值编号边观测值编号边观测值编号边观测值东华理工大学毕业设计测边网平差程序设计编辑数据文本文件如下图图数据文件在MATLAB命令窗口键入nnbb执行程序运行中会弹出一个对话匡提示用户输入误差椭圆的放大比例默认为本例选择。如下图图a对话框图b对话框计算出的结果如下:在图a中第、行分别是已知点和未知的个数第行是点的编号第至第行是已知点的坐标第行是观测值的个数第行是测距的固定误差和比例误差至行是观测边的起点号、终点号和观测边长至行(接到图b)是点号转换为计算机顺序后的观测边起点号、终点号和观测边长。接图a在图b中第至行是推算的近似坐标第至行是计算的误差方程系数和常数。在图中第至行是法方程的系数(上三角一维存储)第至行是求逆后的法方程系数第至是坐标改正数和坐标平差值第至行是误差椭圆的参数第行是单位权中误差。东华理工大学毕业设计测边网平差程序设计图a计算结果图b计算结果东华理工大学毕业设计测边网平差程序设计图c计算结果输出的控制网图和误差椭圆图如下:图控制网图东华理工大学毕业设计结论结论由本论文的两个程序例子解算过程不难发现程序的平原理和其它高级语言编写的程序大致相同的。但MATLAB语言本身就有独特的数值计算功能和图形绘制功能这使它不用编写专门的函数而直接处理和计算测量的数据这就大大缩短了编程的时间。MATLAB软件将人们从乏味的Fortran、C编程中解放出来使他们真正的把精力放在科学研究的核心问题上。但用MATLAB语言编程本身也有它的不足之处:由于MATLAB是一个解释器会逐行对程序代码进行解释后执行当要处理的数据量很大时计算机的运行速度明显变慢了好多。用MATLAB进行界面开发时没有像其他面向对象语言方便。针对上面的问题提出一些见解:为了提高整体程序的执行效率应尽量多使用向量化的运算而避免或少用for循环、while循环。事实上如果程序是纯粹的数值运算、而没有使用for循环或while循环那么其执行速度将会接近于纯粹用C语言来写的程序代码。虽然MATLAB是一个完整的科学计算与可视化环境但在多数情况下如MATLAB编程的代码执行效率不佳、你希望隐藏你的程序代码以保护产权、或您想要进行任何只有在某些高级语言程序才能做到的事这时就需要用MATLAB所提供的应用程序接口。东华理工大学毕业设计致谢致谢本论文是在导师吴良才教授的热忱关怀和细心指导下完成的。从论文选题到最后的成文无不凝结着导师的心血。导师开拓创新的精神、严谨踏实的治学态度以及宽厚的为人都使我深受熏陶并将使我终身受益。在此谨向导师致以衷心的感谢和诚挚的敬意。此外也感谢测绘专业的全体老师正因为有了他们的虚心教导使我的知识得到一点一滴的积累才从容的完成今天的毕业设计。东华理工大学毕业设计参考文献参考文献崔明理控制测量手册山西:山西科学技术出版社,吴俊昶控制网测量平差版北京:北京测绘出版社,谭辉测量程序与新型全站仪的应用北京:机械工业出版社,孔祥元,梅是义控制测量学下册版武汉:武汉大学出版社,武汉大学测绘学院测量平差学科组误差理论与测量平差基础武汉:武汉大学出版社,张智星MATLAB程序设计与应用北京:清华大学出版社,郭九训控制网平差程序设计北京:原子能出版社,姚连壁,周小平基于MATLAB的控制网平差程序设计上海:同济大学出版社,机械工业出版社,清源计算机工作室MATLAB基础及其应用M北京:程卫国,冯峰,姚东,徐昕,等MATLAB应用指南M北京:人民邮电出版社,CHAIYanjun,etalQuasiaccurateDetectionMethodsofGrossErrorswithMATLABLanguageJJournalofShandongUniversityofScienceandTechnology(NatureScience),,()NIEGuigenApplicationofMATLABtoSurveyingDataProcessingJBulletinofSurveyingandMapping,,()东华理工大学毕业设计附录一附录一水准网平差程序代码:functionleveled,dd,sd,gd,pn,h,k,k,h,s=readlevelnetdataglobalpathnamenetnamesdatafileadatafileglobaledddsdpngdhkkhsdhdh,h,V,L,uw,uwh,uw=calculatelevelnet(ed,dd,sd,pn,gd,h,k,k,h,s)writelevelnetdata(pn,k,k,h,V,L,h,dh,h,uwh,uw)输出水准网计算结果returnfunctiondh,h,V,L,uw,uwh,uw=calculatelevelnet(ed,dd,sd,pn,h,be,en,hd,distance)水准平差网A=sparse(zeros(sd,gd))求解系数阵b=(:(gd)*sd)A(be'b)=A(en'b)=A=A'A=A(:,:dd)l=zeros(gd,)求解常数项l=h(be)h(en)hdp=diag(distance)权阵dh=inv(A'*p*A)*A'*p*高程改正数h=h(dd:sd)h=h(:dd)待定点高程近似值h=hdh待定点高程平差值V=A*dh高差观测值改正数L=hdV高差观测值平差值精度评定uw=sqrt(V'*p*V(gddd))单位权中误差Qxx=inv(A'*p*A)uwh=uw*sqrt(diag(Qxx))待定点高程平差值中误差uwh(dd:eddd)=东华理工大学毕业设计附录一Qff=A*Qxx*A'uwh=uw*sqrt(diag(Qff))高差平差值中误差h=hh所有点高程h=hhdh=dhzeros(ed,)returnfunctioned,dd,sd,gd,pn,h,k,k,h,s=readlevelnetdataglobalpathnamenetnamesdatafilebdatafileglobaledddsdpngdhkkhskkk=k=h=s=if(isempty(pathname)|isempty(netname))filename,pathname=uigetfile('*txt','Inputfilename')i=find(''==filename)netname=filename(:i)endfid=fopen(strcat(pathname,netname,sdatafile),'rt')if(fid==)msgbox('InputFileorPathisnotcorrect','Warning','warn')returnendopenafiletoreadopenafiletoreaded=fscanf(fid,'f',)已知点个数dd=fscanf(fid,'f',)未知点个数sd=eddd总点数gd=fscanf(fid,'f',)观测点个数pn=fscanf(fid,'f',sd)点号knowndatah=fscanf(fid,'f',ed)已知点高程h(dd:eddd)=h(:ed)heightdiff=fscanf(fid,'f',,gd)heightdiff=heightdiff'k=heightdiff(:,)起点k=heightdiff(:,)终点东华理工大学毕业设计附录一k=heightdiff(:,)起点k=heightdiff(:,)终点h=heightdiff(:,)高差s=heightdiff(:,)距离fclose('all')点号转换k,k=chkdat(sd,pn,k)k,k=chkdat(sd,pn,k)h(:dd)=ie=while()计算近似高程fork=:gdi=k(k)j=k(k)if(h(i)<leh(j)>le)h(j)=h(i)h(k)ie=ieendif(h(i)>leh(j)<le)h(i)=h(j)h(k)ie=ieendendif(ie==dd)breakendendh=reshape(h,length(h),)returnfunctionn,k=chkdat(sd,pn,n)n=length(n)k=fori=:n东华理工大学毕业设计附录一i=forj=:sdif(n(i)==pn(j))i=n(i)=jbreakendendif(i==)fprintf(fit,'ddn',n(i))k=endendreturn东华理工大学毕业设计附录二附录二测边网平差程序代码:globaledddsdddpnxymmmmsppedsidmdgfaabbccrtrrttqlwglobalpathnamenetnamesdatafilebdatafilex=y=e=d=sid=g=f=pn=数据的读入if(isempty(pathname)|isempty(netname))filename,pathname=uigetfile('*txt','Inputfilename')i=find(''==filename)netname=filename(:i)endfit=fopen(strcat(pathname,filename),'rt')if(fit==)msgbox('InputFileorPathisnotcorrect','Warning','warn')returnendopenafiletoreadbdatafile='outtxt'fit=fopen(strcat(pathname,netname,bdatafile),'wt')if(fit==)msgbox('InputFileorPathisnotcorrect','Warning','warn')returnenda=fscanf(fit,'d',)ed=a()dd=a()sd=edddfprintf(fit,'dn',ed,dd,dd)fprintf(fit,'n')pn=fscanf(fit,'d',sd)东华理工大学毕业设计附录二pn=pnpn,i=chkdat(sd,pn,pn)fprintf(fit,'dddddddddddn',pn)fprintf(fit,'n')a=fscanf(fit,'f',*ed)fori=:edx(i)=a(*i)y(i)=a(*i)fprintf(fit,'ffn',x(i),y(i))endfprintf(fit,'n')m=fscanf(fit,'d',)fprintf(fit,'dn',m)isid=if(m>)fprintf(fit,'siden')a=fscanf(fit,'f',)ms=a()pp=a()fprintf(fit,'ffn',ms,pp)a=fscanf(fit,'ddf',*m)fori=:me(i)=a(*i)d(i)=a(*i)sid(i)=a(*i)fprintf(fit,'ddfn',e(i),d(i),sid(i))ende,i=chkdat(sd,pn,e)d,i=chkdat(sd,pn,d)i=fori=:mif(e(i)==d(i))i=fprintf(fit,'**ddd**n',i,e(i),d(i))endfprintf(fit,'ddfn',e(i),d(i),sid(i))end东华理工大学毕业设计附录二isid=iiiendidir=kk=isidif(kk>)msgbox('Errorbyfunctionrddat','Warning','warn')returnend坐标计算近似xyknow(:ed)=pn(:ed)xyunknow(:dd)=pn(ed:sd)aa=fscanf(fit,'d',)A=aa()B=aa()mn=fscanf(fit,'d',)bb=fscanf(fit,'d',mn)m=bbfori=:length(m)ifi==ife(m(i))==A|e(m(i))==BP=d(m(i))elseP=e(m(i))endelseife(m(i))==A|d(m(i))==AB=PelseA=Pendife(m(i))==A|e(m(i))==BP=d(m(i))elseP=e(m(i))end东华理工大学毕业设计附录二endforj=:mif(e(j)==P|d(j)==P)(d(j)==A|e(j)==A)s=sid(j)endif(e(j)==P|d(j)==P)(d(j)==B|e(j)==B)s=sid(j)endenddeltx=x(B)x(A)delty=y(B)y(A)alfaAB=alfa(deltx,delty)ss=sqrt(deltx*deltxdelty*delty)ee=(s*sss*sss*s)(*ss)ff=sqrt(s*see*ee)x(P)=x(A)ee*cos(alfaAB)ff*sin(alfaAB)y(P)=y(A)ee*sin(alfaAB)ff*cos(alfaAB)endfprintf(fit,'n')fprintf(fit,'计算的近似坐标n')fori=:sdfprintf(fit,'ffn',x(i),y(i))endk=while(k)lo=n=*ddsum=n*(n)sd=eddda=东华理工大学毕业设计附录二a(:m,:)=c(:sum)=w(:n)=fori=:m边长观测误差方程dx=x(d(i))x(e(i))dy=y(d(i))y(e(i))ss=sqrt(dx*dxdy*dy)cosa=dxsssina=dyssa(i,)=*e(i)*edea(i,)=cosaa(i,)=a(i,)a(i,)=sinaa(i,)=*d(i)*edea(i,)=cosaa(i,)=a(i,)a(i,)=sinaa(i,)=*(sssid(i))ql(i)=(ms^(ss*pp*)^)ql(i)=((msss*pp*))ql(i)=ql(i)^fprintf(fit,'fffffffffn',a(i,:))endfprintf(fit,'fn',ql)fori=:m形成法方程forj=:jj=fix(a(i,*j))if(jj<=)continueendw(jj)=w(jj)a(i,*j)*a(i,)*ql(i)di=(jj)*(njj)fork=:kk=fix(a(i,*k))东华理工大学毕业设计附录二if(kk<=|jj>kk)continueendc(dikk)=c(dikk)a(i,*k)*a(i,*j)*ql(i)endendendfprintf(fit,'n')fprintf(fit,'fn',w)fprintf(fit,'fffffffffn',c)坐标改正数和单位权中误差的计算sd=edddn=*ddk=fori=:ndxy(i)=di=(i)*(ni)forj=:ndj=(j)*(nj)if(j<i)dxy(i)=dxy(i)c(dji)*w(j)dxy(i)=dxy(i)c(dij)*w(j)elsedxy(i)=dxy(i)c(dij)*w(j)dxy(i)=dxy(i)c(dji)*w(j)endendif(abs(dxy(i))>)k=enddxy(i)=dxy(i)endendwhile(k)while(k)东华理工大学毕业设计附录二x(:ed)=x(:ed)y(:ed)=y(:ed)fori=:ddx(edi)=x(edi)dxy(*i)y(edi)=y(edi)dxy(*i)endx(:sd)=x(:sd)y(:sd)=y(:sd)fori=:sdif(i<=ed)vx(i)=vy(i)=elsevx(i)=dxy(*(ied))vy(i)=dxy(*(ied))endendfprintf(fit,'adjustedcoordinatesn')fprintf(fit,'pnvxxvyyn')fori=:sdfprintf(fit,'dffffn',pn(i),vx(i),x(i),vy(i),y(i))endpvv=fori=:npvv=pvvw(i)*dxy(i)*endfori=:mpvv=pvva(i,)*a(i,)ql(i)enduw=sqrt(pvv((mn)*e))fprintf(fit,'fn',uw)东华理工大学毕业设计附录二endwhile(k)while(k)点位误差椭圆的计算globalaibififit=fopen('D:大牛文档worksiliouttxt','wt')fprintf(fit,'parameteroferrorellipsen')fprintf(fit,'pn(i)mxmymmabfin')n=*ddmaxmm=smm=fori=:ddii=edidi=(*i)*(n(*i))dj=(*i)*(ni)ql=c(di*i)q=c(dj*i)q=c(di*i)dl=sqrt(abs(qlqq))d=uw*dlxx=qlqyy=*qzz=qlqmx=sqrt(ql)my=sqrt(q)mm=sqrt(zz)if(abs(xx)<e)fi(i)=sign(,q)elsefi(i)=atan(yyxx)*endif(xx>=yy>=)fi(i)=fi(i)elseif(xx>=yy<=)fi(i)=(fi(i))东华理工大学毕业设计附录二elseif(xx<)fi(i)=(fi(i))endww=sqrt(xx*xxyy*yy)a=sqrt((zzww))b=sqrt((zzww))ab=abmx=uw*mxmy=uw*mymm=uw*mmif(mm>maxmm)i=iiendsmm=smmmmai(i)=uw*abi(i)=uw*bab=ai(i)bi(i)fprintf(fit,'dffffffn',pn(ii),mx,my,mm,ai(i),bi(i),fi(i))endsmm=smmddfprintf(fit,'mseofunitweight=fn',uw)fprintf(fit,'themaximumstationerrormm=f(cm)pp=dn',maxmm,pn(i))fprintf(fit,'theaveragestationerrormm=fn',smm)fprintf(fit,'fn',uw)绘制控制网图kk=tile={'误差椭圆比例'}prompt={'请输入误差椭圆的比例'}lines=d={''}c=inputdlg('pleseinputthescale','scale',lines,d)输入误差比例椭圆对话框东华理工大学毕业设计附录二scale=strnum(strmat(c))scale=holdofftitle('控制网网图')xlabel('Y坐标')ylabel('X坐标')plot(y(:ed),x(:ed),'k')holdonplot(y((ed):end),x((ed):end),'k')fori=:eddd写点名text(y(i),x(i),numstr(pn(i)))endfori=:m画边长连线plot(y(e(i))y(d(i)),x(e(i))x(d(i)),'r')endfori=:dd画误差椭圆fe(i)=fi(i)*piplot(y(ied)(ai(i)*cos(::*pi)*sin(fe(i))bi(i)*sin(::*pi)*cos(fe(i)))*scale,x(ied)(ai(i)*cos(::*pi)*cos(fe(i))bi(i)*sin(::*pi)*sin(fe(i)))*scale,'r')endaxisequalzoomonfclose('all')open(strcat(pathname,netname,bdatafile))returnfunctiona=alfa(dx,dy)计算方位角函数a=atan(dydx)if(dy>dx>)a=aelseif(dx<)a=piaelsea=*pia东华理工大学毕业设计附录二end东华理工大学毕业设计附录三附录三法方程求逆函数functionc=invsqr(c,n)ss=fori=:ndi=(i)*(ni)forj=i:nss=c(dij)fork=:idk=(k)*(nk)ss=ssc(dkj)c(dkk)endif(i==j)c(dij)=sselsec(dij)=ss*c(dii)endendendfori=:ndi=(i)*(ni)forj=i:nss=c(dij)fork=i:jdk=(k)*(nk)ss=ssc(dik)*c(dkj)endc(dij)=ssendendfori=:ndi=(i)*(ni)forj=i:ndj=(j)*(nj)东华理工大学毕业设计附录三if(j==i)ss=c(dij)elsess=c(dij)*c(dji)endfork=j:ndk=(k)*(nk)ss=ssc(dik)*c(djk)*c(dkk)endc(dij)=ssendendretur

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/60

基于MATLAB的水准网和测边网平差程序设计

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利