基于MATLAB的水準網(wǎng)和測邊網(wǎng)平差程序設(shè)計_第1頁
基于MATLAB的水準網(wǎng)和測邊網(wǎng)平差程序設(shè)計_第2頁
基于MATLAB的水準網(wǎng)和測邊網(wǎng)平差程序設(shè)計_第3頁
基于MATLAB的水準網(wǎng)和測邊網(wǎng)平差程序設(shè)計_第4頁
基于MATLAB的水準網(wǎng)和測邊網(wǎng)平差程序設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、-PAGE . z.基于MATLAB的水準網(wǎng)和測邊網(wǎng)平差程序設(shè)計摘 要 MATLAB是目前在研究機構(gòu)廣泛應(yīng)用的一種數(shù)值計算及圖形工具軟件,它的特點是語法構(gòu)造簡明、數(shù)值計算高效、圖形功能完備,特別適合非專業(yè)編程員完成數(shù)值計算、科學試驗處理等任務(wù)。以往的測量數(shù)據(jù)處理方法需要編制特定的處理矩陣運算程序,而且程度復(fù)雜,難度大。本文介紹一種基于MATLAB的水準網(wǎng)和測邊網(wǎng)的程序設(shè)計方法,與其它算法語言相比,具有編程簡單,運算速度快的特點。文中分別闡述了水準網(wǎng)和測邊網(wǎng)程序的理論根底、實現(xiàn)步驟和運行結(jié)果。通過實例的分析,總結(jié)出利用MATLAB對測量數(shù)據(jù)處理有很大的應(yīng)用價值,它縮短了編程的時間,提高工作效率。

2、關(guān)鍵詞:MATLAB; 水準網(wǎng); 測邊網(wǎng); 程序設(shè)計 ABSTRACTMATLAB is one species of numerical-values calculation and graphic tools software which is widely used to apply at research institutions at present. The particularities are: concise grammar-structure、highly efficient in numerical values calculating、plete function of

3、 graphs、especially it is adapted to evildoing professional programmer to acplish the tasks that are numerical-values calculating and scientific e*periments treating. The ancient methods of measured data-processing need establishing special proceedings of treating matrices operation, moreover, it is

4、ple* and greatly difficult.This article introduces one programming method dealing with leveling and measuring edge network based on MATLAB. pared with other algorithm language, it has particularities which are simply programming and quickly operating. The article separately e*patiate the theories ba

5、sics、realizing steps and running results at leveling and measuring edge network. With the analysis of e*amples, it has prodigious application value in measured data-processing by use of MATLAB. Moreover, it shortens programming time and improves working effectiveness.Key words:MATLAB;levelingnetwork

6、;measuring edge network;programming-. z.目 錄TOC o 1-3 h z uHYPERLINK l _Toc170624507緒論 PAGEREF _Toc170624507 h 4HYPERLINK l _Toc1706245081. MATLAB軟件簡介 PAGEREF _Toc170624508 h 5HYPERLINK l _Toc1706245092MATLAB 在測量平差中的應(yīng)用6HYPERLINK l _Toc1706245102.1測量平差原理的概述6HYPERLINK l _Toc1706245112.2平差程序總體方案7HYPERLI

7、NK l _Toc1706245123.1程序的功能8HYPERLINK l _Toc1706245133.2水準模型網(wǎng)的間接平差8HYPERLINK l _Toc170624514“權(quán)值確實定8HYPERLINK l _Toc1706245153.2.2 水準路線的平差計算9HYPERLINK l _Toc1706245163.2.3 精度評定11HYPERLINK l _Toc1706245173.3 水準網(wǎng)間接平差程序信息設(shè)計11HYPERLINK l _Toc1706245183.4水準網(wǎng)程序與使用說明 PAGEREF _Toc170624518 h 12HYPERLINK l _To

8、c1706245193.4.1 水準網(wǎng)程序流程圖 PAGEREF _Toc170624519 h 12HYPERLINK l _Toc170624520水準網(wǎng)程序的使用 PAGEREF _Toc170624520 h 12HYPERLINK l _Toc1706245213.5 案例 PAGEREF _Toc170624521 h 13HYPERLINK l _Toc1706245224. 測邊網(wǎng)平差程序設(shè)計 PAGEREF _Toc170624522 h 16HYPERLINK l _Toc1706245234.1 數(shù)學模型 PAGEREF _Toc170624523 h 15HYPERLI

9、NK l _Toc1706245244.1.1 誤差方程和法方程的組成15HYPERLINK l _Toc170624525邊長觀測的權(quán) PAGEREF _Toc170624525 h 15HYPERLINK l _Toc1706245264.1.3 解算法方程16HYPERLINK l _Toc170624527精度評定19HYPERLINK l _Toc1706245284.2測邊網(wǎng)平差信息設(shè)計 PAGEREF _Toc170624528 h 20HYPERLINK l _Toc1706245294.2.1 主要的技術(shù)要求 PAGEREF _Toc170624529 h 21HYPERLI

10、NK l _To用MATLAB的繪圖語句繪制網(wǎng)圖 PAGEREF _Toc170624530 h 21HYPERLINK l _Toc1706245314.4 測邊網(wǎng)程序和使用說明 PAGEREF _Toc170624531 h 22HYPERLINK l _Toc1706245324.5程序代碼說明: PAGEREF _Toc170624532 h 23HYPERLINK l _Toc1706245334.6 程序的使用算例 PAGEREF _Toc170624533 h 25HYPERLINK l _Toc170624534結(jié)論29HYPERLINK l _Toc

11、170624535致30HYPERLINK l _Toc170624536參考文獻 PAGEREF _Toc170624536 h 31HYPERLINK l _Toc170624537附錄一 PAGEREF _Toc170624537 h 32HYPERLINK l _Toc170624538附錄二 PAGEREF _Toc170624538 h 36HYPERLINK l _Toc169661692附錄三46-. z.緒論作為一名測量技術(shù)人員,如果不掌握一門PC機編程語言與便攜計算工具,要想提高測量工作的效率幾乎寸步難行。測量需求的多樣性與復(fù)雜性,造就了測量計算鮮明的個性化特點,這就是在商

12、業(yè)測量計算軟件高度興旺的今天,掌握一種實用的程序語言進展編程計算仍有廣泛的市場需求的重要原因。當今較流行的計算機程序語言根本上都是基于Windows的,例如Turbo Pascal,Visual Basic,Visual C,Borland C+等,這些程序語言的優(yōu)勢是基于對象及可利用Windows豐富的系統(tǒng)資源,應(yīng)用它們可以開發(fā)出界面非常豐富和友好的應(yīng)用程序,其劣勢主要有以下幾點:1.Windows程序都非常龐大,學習并熟練掌握它們并非易事。2.雖然市場上已有的多種專用的測量平差軟件都是采用C語言開發(fā)的,但這些軟件價格都比擬貴,而且都帶有加密狗,一次只能供一個用戶使用。出于商業(yè)目的,開發(fā)商不

13、會公開程序源代碼,這為修改程序功能以適應(yīng)用戶的特殊需求帶來了不便。3.在測量生產(chǎn)中,經(jīng)常需要根據(jù)工程的實際情況進展一些個性化的數(shù)值計算工作,這些數(shù)值計算工作無固定模式,這就需要求測量技術(shù)人員最好能熟練掌握一種適用于數(shù)值計算的程序語言,以便提高測量計算的效率。4.C語言的數(shù)值計算語句不夠豐富,例如,在測量平差計算中,經(jīng)常需要進展的矩陣運算,尤其是解法方程的矩陣求逆不能直接使用語句實現(xiàn),而必須應(yīng)用計算機算法編程實現(xiàn)。如果不是基于商業(yè)軟件開發(fā),只為滿足實際測量工作計算需要,則C語言的劣勢就變成了MATLAB語言的優(yōu)勢。-. z.1.MATLAB軟件簡介MATLAB是從Matri*(矩陣)和Labor

14、atory(實驗室)各取前3個字母組成的,意思是矩陣實驗室,是美國MathWorks公司于20世紀80年代中期推出的一種交互式、面向?qū)ο蟮目萍紤?yīng)用軟件,是一個為科學和工程計算而專門設(shè)計的高級交互式軟件包。MATLAB集成了圖示與準確的數(shù)值計算,是一個可以完成各種計算和數(shù)據(jù)可視化的強有力工具,其優(yōu)秀的數(shù)值計算能力和卓越的數(shù)據(jù)可視化能力使其很快在數(shù)學軟件中脫穎而出,成為以矩陣運算為主要工作方式的線性代數(shù)、概率論和數(shù)理統(tǒng)計、自動控制、數(shù)字信號處理、動態(tài)系統(tǒng)仿真等領(lǐng)域教學和科研工作者的有力武器。隨著該軟件自身的開展及市場的需求,其功能日趨完善,前其最高版本7.0版已經(jīng)推出,隨著版本的不斷升級,它的數(shù)值

15、計算及符號計算功能得到了進一步完善。MATLAB是以矩陣作為數(shù)據(jù)操作的根本單位,矩陣的生成、運算、轉(zhuǎn)置、求逆等非常簡單。在MATLAB環(huán)境中,不需要對創(chuàng)立的變量對象給出類型說明和維數(shù),所有的變量都作為雙精度數(shù)來分配內(nèi)存空間,MATLAB將自動地為每一個變量分配內(nèi)存。MATLAB語言起源于矩陣運算,并已經(jīng)開展成為一種高度集成的計算機語言,它提供了強大的科學運算、靈活的程序設(shè)計流程、高質(zhì)量的圖形可視化與界面設(shè)計、便捷的與其他程序和語言接口的功能。MATLAB系統(tǒng)主要包含5 局部的內(nèi)容:MATLAB 工作環(huán)境、Mablab 數(shù)學函數(shù)庫、MATLAB語言體系、句柄圖形、MATLAB應(yīng)用程序接口(API

16、)。MATLAB系統(tǒng)主要功能包括:數(shù)值計算功能、符號計算功能、數(shù)據(jù)分析和可視化、文字處理功能、SIMULINK動態(tài)仿真功能。同時,MATLAB又是開放的,除了內(nèi)部函數(shù)之外,所有的MATLAB 主包文件和各工具包文件都是可讀可改的源文件,用戶可以作為參考掌握其用法,并可對其修改以適應(yīng)自己的需要,也可參加自己編寫的文件構(gòu)成新的工具包。例如,隨著GPS 的廣泛應(yīng)用,Orion Dynamics and Con2t rol Corporation、Constell Inc. GPSSoft LLC、NavsysCorporation等多家公司都相應(yīng)開發(fā)出了適于GPS數(shù)據(jù)處理的MATLAB 工具箱。MA

17、TLAB是一個集數(shù)值計算、圖形管理、程序開發(fā)于一體的功能十分強大的系統(tǒng)。將MATLAB應(yīng)用于測量數(shù)據(jù)的處理是一件非常有意義的工作。Mo2hamed等曾成功地在MATLAB系統(tǒng)中利用白濾波技術(shù)研究動態(tài)解算GPS載波相位信號的模糊度問題。因為測量數(shù)據(jù)的處理特別是測量平差主要應(yīng)用矩陣運算,而MATLAB又特別易于做矩陣運算,因此,研究開發(fā)基于MATLAB的測量平差方法具有極好的應(yīng)用價值。-. z.2MATLAB 在測量平差中的應(yīng)用測量平差數(shù)據(jù)處理主要是基于矩陣的運算,常用的矩陣運算主要是矩陣的生成、轉(zhuǎn)置、求逆和矩陣求廣義逆等。在MATLAB環(huán)境中,不需要對創(chuàng)立的變量對象給出類型說明和維數(shù),所有的變量

18、都作為MATLAB中的M文件的語法與其他的高級語言類似,是一種程序化的編程語言,同時也是一種解釋性的編程語言,即逐行解釋運行程序,使程序容易調(diào)試,計算更為簡捷,而且對于平差原理理解和掌握變得更容易。另外,MATLAB語言與數(shù)學語言比擬接近,更容易掌握和理解。2.1測量平差原理的概述 測量平差的函數(shù)模型有條件方程和觀測方程。以條件方程為函數(shù)的模型的最小二乘平差稱為條件平差;在條件方程中,根據(jù)需要如果還設(shè)有一定數(shù)量的未知數(shù),則稱為附有參數(shù)的條件平差;以觀測方程為函數(shù)模型的最小二乘平差稱為間接平差;如果觀測方程中的*些參數(shù)不獨立,則這些不獨立參數(shù)必然存在一些條件,稱這種平差模型為附有條件的間接平差。

19、本文的兩個程序都采用間接平差模型。對于一個實際平差問題,根據(jù)所選參數(shù)的個數(shù)、選什么量為參數(shù)以及參數(shù)之間是否函數(shù)獨立,經(jīng)過仔細推敲可以發(fā)現(xiàn)附有條件的間接平差模型本身就是各種經(jīng)典平差模型的概括模型,其余的經(jīng)典平差模型,如條件平差模型、間接平差模型、附有未知數(shù)的條件平差模型和附有限制條件的條件平差模型都是它的特例。間接平差的公式聚集:間接平差模型為21系數(shù)矩陣B滿秩,即rank(B)=t法方程及解為:2-22-3參數(shù)的平差值: 2-4觀測量的平差值:2-5單位權(quán)中誤差: 2-6平差參數(shù)的協(xié)方差陣:2-7 平差函數(shù)的協(xié)方差陣:2-82.2平差程序總體方案MATLAB號稱為全球工程師的共同語言,其語法和

20、C語言相似,但它有強大的數(shù)值計算和繪圖功能,這使之在工程應(yīng)用方面的計算更出色,本文就基于這種程序設(shè)計語言環(huán)境設(shè)計一個控制網(wǎng)平差程序。該程序包含了一個高程控制網(wǎng)平差程序和測邊網(wǎng)平差程序。本程序適用于各種等級的高程網(wǎng)和測邊網(wǎng),程序在設(shè)計過程中,始終考慮數(shù)據(jù)的儲存量。因而本程序不儲存誤差方程的系數(shù)和常數(shù)項,對待定點數(shù)較多的平差網(wǎng),組成法方程的系數(shù)矩陣是個稀疏矩陣,如待定點的編號恰當,法方程的系數(shù)會集中在主元系數(shù)的兩側(cè)形成帶狀。為減少法方程系數(shù)的儲存量,只要按行儲存下三角陣或按列儲存上三角陣中第一個非零系數(shù)起的系數(shù),就是通常叫做維變帶寬儲存方法。-. z.3. 水準網(wǎng)平差程序3.1程序的功能本程序適用

21、于二、三、四等水準網(wǎng)平差計算,平差的水準網(wǎng)可以是獨立的、也可以是附合網(wǎng),其主要功能是完成水準網(wǎng)的平差計算和精度評定計算。平差計算采用間接平差法,以歸心的觀測值為高差,以未知點高程為未知參數(shù)。精度評定計算包括計算單位權(quán)中誤差和每個待定點的高程中誤差。3.2水準模型網(wǎng)的間接平差“權(quán)值確實定當在一樣的條件下進展水準測量時,其精度是一樣的,因而觀測結(jié)果的可靠性也是同樣的。但如果在不同的條件下進展水準測量時,高程的精度就有所不同,此時稱為不等精度觀測,所求出的未知量的值、高程的最或是值并對其精度進展評定時,就需要“權(quán)了。由于觀測的不等精度,因而觀測值的可靠程度不同,求未知量的最或是值時,這樣的一個因素就

22、必須考慮了,這個因素是:可靠性大的*觀測值,其精度高,對測量的最后結(jié)果的影響也就越大。此時用“權(quán)值來表示觀測值的可靠程度,則,“權(quán)值愈大,觀測值的可靠程度就愈高。另外,在觀測過程中,觀測值的中誤差愈小,觀測結(jié)果愈可靠,它的“權(quán)值就愈大。因而,根據(jù)中誤差來確定“權(quán)值是非常適當?shù)?。設(shè)以Pi 表示觀測值Li 的“權(quán),m 為中誤差,則“權(quán)值的定義為:(3-1)式中:A 為任意的正常數(shù),在一組觀測值中為一個定數(shù)。在實際測量中,通常是觀測值的中誤差事先并不知道,因而必須先確定觀測值的“權(quán),然后才能求出未知量的最或是值。此時可以利用距離(S)或測站數(shù)(N)來確定觀測值高程的“權(quán)。根據(jù)偶然誤差傳播定律,各觀測

23、點高程Hi的中誤差mi由測站數(shù)Ni確定時,則有:(3-2)式中:m 為一組觀測值的中誤差,為一個定數(shù).由(3-2-1)、(3-2-2)兩式可得:(3-3)同樣可得出: 3-4式中:C為定數(shù),為測距.由(3-3)、3-4兩式可以得出這樣一個結(jié)論:當測站觀測高差等精度時,觀測總高差的“權(quán)與測站數(shù)或距離成反比。水準路線的平差計算1附合路線的平差計算假定在圖1 示的A 、B 兩水準點之間布設(shè)一條水準路線,A 、B 兩水準點的高程為,分別設(shè)為、C為中間水準點。假定觀測了所有的點的高程,現(xiàn)擬求C點的高程的最或是值??捎伤疁事肪€A C、B C分別觀測的高差、計算得出,由此而得到的觀測高程分別設(shè)為Hc1、Hc

24、2,其值為:Hc1=+;Hc2=+當Hc1、Hc2在不等精度條件下觀測得出時,它們的“權(quán)也不同,分別設(shè)為Pc1、Pc2,這樣C點的高程的最或是值為:(3-5)根據(jù)A 點的高程,A C水準路線觀測的高差以及B C水準路線觀測的高差,可推算出B點的觀測高程為:=+-水準路線A B 的高程閉合差為:=-=(3-6)由3-6)式得到: =-由3-3)式得到:、分別表示水準路線AC、BC 的測站數(shù),水準路線AB的測站數(shù))將上述表達式代入(3-2-5)式中,得到:(3-7)如果以水準路線AC的距離、B C的距離、AB的距離()來確定高程觀測值的“權(quán)值時,同樣可以得到:(3-8)圖3-1 水準路線圖2閉合路

25、線的平差計算閉合路線的平差計算原理與附合路線一樣,因而(3-7)、(3-8)兩式的結(jié)論適用于閉合路線的平差計算。(3) 具有一個結(jié)點的水準網(wǎng)的平差計算如圖2所示為具有一個結(jié)點的水準網(wǎng),B,C,D,為高程水準點,BA,CA,D A,為水準路線,則接點A的高程最或是值為:(3-9)式中分別為水準路線BA,CA,DA,計算A的觀測高程,各高程相應(yīng)的“權(quán)值為設(shè)的算術(shù)平均值為,各高程觀測值與的差值分別為A1,A2,A3,則有:(3-10)將(3-10)式代入(3-9)式得到:(3-11)當以測站數(shù)和距離來確定“權(quán)值時,(3-11)分別可以轉(zhuǎn)化為:(3-12)(3-13)上述結(jié)論也可應(yīng)用于小三角水準網(wǎng)平差

26、計算。 精度評定單位權(quán)中誤差:3-12平差參數(shù)的協(xié)方差陣:3-13 平差函數(shù)的協(xié)方差陣:3-14 3.3 水準網(wǎng)間接平差程序信息設(shè)計1數(shù)據(jù)文件的組織下面給出一個水準網(wǎng)輸入數(shù)據(jù)文件的例子:3 3 6點個數(shù)、未知點個數(shù)、觀測值個數(shù)101 102 103 104 105 106 點號34.788 35.259 37.825 點高程104 101 1.625 4.5起點點號、終點點號、高差觀測值、距離觀測值101 102 -0.418 3.1105 102 0.714 3.4 102 103 1.243 3.8106 103 -0.577 4.3103 101 -0.786 2.5其中編號數(shù)組未知點在

27、前,點在后2水準網(wǎng)平差變量約定表3-1 變量約定表 變量名說明ed點個數(shù)dd未知點個數(shù)sd總點數(shù)gd觀測值個數(shù)pn點號h0點高程be起點點號en終點點號h1高差觀測值s距離觀測值水準網(wǎng)程序與使用說明 水準網(wǎng)程序流程圖圖3-2 水準網(wǎng)流程圖程序的全部代碼見附錄一。水準網(wǎng)程序的使用本程序使用MATLAB的矩陣功能計算法方程,在運行程序前首先要有其始數(shù)據(jù)。其始數(shù)據(jù)是一文件的形式保存在磁盤中,文件的格式在上文已經(jīng)說明過,編好文件后,以后綴名為.T*T的形式保存。執(zhí)行時在MATLAB命令窗口直接鍵入文件名即可。3.5 案例如下列圖水準網(wǎng),104、105、106為點,101、102、103為待定點,點的高

28、程分別為34.788,35.259 ,37.825 。觀測高差和觀測路線長度分別為: h1=1.652, h2=-0.418 ,h3=0.714 ,h4=1.243, h5=-0.577, h6=-0.786.s1=4.5, s2=3.1, s3=3.4, s4=3.8, s5=4.3, s6=2.5.圖3-3 水準網(wǎng)圖 首先編數(shù)據(jù)文件,命名為data1.t*t.數(shù)據(jù)的格式如下:3 3 6 101 102 103 104 105 106 34.788 35.259 37.825 104 101 1.652 4.5 101 102 -0.418 3.1105 102 0.714 3.4 102

29、103 1.243 3.8106 103 -0.577 4.3103 101 -0.786 2.5進入MATLAB界面,在命令窗口直接輸入level3運行程序。彈出如下窗口圖3-4 數(shù)據(jù)讀入文件選擇data1.t*t即可運行出如下結(jié)果:圖3-5 計算結(jié)果-. z. 在圖3-5中,分別輸出了高程的平差值及精度。結(jié)果是一文本的形式保存,用戶可對它進展編輯。4. 測邊網(wǎng)平差程序設(shè)計4.1數(shù)學模型 誤差方程和法方程的組成控制網(wǎng)中的觀測值為邊長,誤差方程非零項最多為4個,所以誤差方程系數(shù)矩陣采用壓縮格式進展儲存??刹捎靡韵碌姆椒ǎ篈(m,n)=A(m,9)其中,m為觀測值個數(shù),n為未知點個數(shù)的兩倍。改良

30、后的A陣格式為=編號1,系數(shù)1,編號2,系數(shù)2,編號4,系數(shù)4,常數(shù)項 共9列。即只存儲誤差方程的4個非零參數(shù)系數(shù)。法方程系數(shù)陣為對稱陣,在存儲時,只需要存其上三角局部就可以了。其占用的空間為:現(xiàn)有A陣: A=編號1,系數(shù)1,編號2,系數(shù)2,編號4,系數(shù)4,常數(shù)項其中偶數(shù)項為系數(shù),加上最后的A9為常數(shù)項,在組成法方程時,從A2開場分別與剩下的偶數(shù)項以及常數(shù)項相乘,然后再用A4與剩余的項相乘,一直到A8為止,這樣就完成了的過程。需要注意的是:假設(shè)A1,A3,A5,A7小于零,則表示該點點,不參與法方程的組成。邊長觀測的權(quán)邊長觀測的精度一般與其長度有關(guān),定權(quán)公式為式中為所測邊長的方差,為任意選定的

31、單位權(quán)方差。為了定權(quán)必須測邊的先驗方差,但準確的是十分困難的,一般采用廠方給定的測距儀精度,即式中,a為固定誤差單位mm,b為比例誤差單位:ppm,為邊長單位km。 解算法方程由于法方程是對稱正定陣,因此,可采用改良的平方根法進展解算。平方根法是對稱正定矩陣非常有效的三角分解方法,設(shè)A為n階方陣,如果其所有順序主子式均不為零,則其存在唯一的分解式: A=LDR其中 L =,D=,R =由于此住A對稱性,得,又根據(jù)A陣正定的性質(zhì),可證明D均為正數(shù)?,F(xiàn)在設(shè) D=即 則 為方便,記為稱為Cholesky分解,即正定對稱矩陣的平方根分解法。解等階于求解兩個三角方程組:和在用平方根分解法計算時,需要進展

32、n次開方運算。為了防止開方,可以直接采用對稱正定的分解式對平方根法進展改良。從而解方程組可以按如下步驟進展:把A分解成,則變成,即等價于由此可以解出*和Y。這稱為改良的平方根法,在計算中防止了開方運算。平方根法和改良的平方根法的計算量和存儲量比消去法節(jié)約近一半,而且不需要選主元,能得到比擬準確的數(shù)值解。法方程用改良平方根法解算的過程如下:(1)分解:其中 純量計算公式為2求逆由RS=I得純量計算公式:通式為 3求積精度評定坐標改正數(shù)以及單位權(quán)中誤差的計算使用上三角一維數(shù)組形式存儲坐標改正數(shù)的公式為:其中,n=2dd,的單位是cm.平差值:寫成分量的形式,為如果近似坐標的誤差較大,或網(wǎng)形較大,平

33、差的結(jié)果不會準確,這時,就需要進展迭代平差,直到兩次平差間互差在允許值內(nèi)。由測量平差理論:同樣可得到單位權(quán)中誤差:其中,m-n觀測個數(shù)減去未知點個數(shù);2點位誤差橢圓 誤差橢圓表示了網(wǎng)中點或點與點之間的誤差分布情況如圖。在測量工作中,常用的誤差橢圓對布網(wǎng)方案作精度分析。繪制誤差橢圓只需要三個數(shù)據(jù):橢圓長半軸a,短半軸b和主軸方向,其求法為圖4-1 誤差橢圓的表達顧及方差與權(quán)倒數(shù)的關(guān)系,得 根據(jù)上述的理論,我們實際要求的是、。只要得到了這些元素,就能依照上面的公式來求得橢圓的元素了。測邊網(wǎng)平差信息設(shè)計外業(yè)測量的數(shù)據(jù)首先應(yīng)進展預(yù)處理,包括測站平差、歸心計算、觀測值歸化到橢球面的改正、橢球面歸化到高斯

34、平面的改正等,然后將預(yù)處理后的數(shù)據(jù)輸入到以后綴名為T*T的文本文件中,該數(shù)據(jù)文件的組織格式如下所列:表4-1 數(shù)據(jù)組織格式 次序內(nèi)容1點個數(shù)ed,未知點個數(shù)dd,控制參數(shù)2點號pn。先輸入點編號,各點輸入順序無要求3點坐標,*0,y0,*1,y1,*2,y24測量邊的個數(shù)m15邊長的固定誤差ms,邊長的比例誤差pp。單位分別是:cm和0.0000016邊長的起始點號e,終點點號d,邊長sid。每一條邊一行,依次列出7推算近似坐標的路線經(jīng)過的邊數(shù)8推算近似坐標的起算點坐標按順時針9推算近似坐標的路線經(jīng)過的邊的邊號 主要的技術(shù)要求表4-2 測邊網(wǎng)的技術(shù)要求等級平均邊長km測距中誤差mm測距相對中誤

35、差二等930 130萬三等530116萬四等216 112萬一級小三角11616萬二級小三角0.516 13萬43利用MATLAB的繪圖語句繪制網(wǎng)圖1. 網(wǎng)形的繪制由于網(wǎng)形圖與誤差橢圓繪制在同一個圖形上,因此必須對誤差橢圓進展放大,在本文的程序中,使用了inputdlg對話框輸入語句,其中,確省的放大倍數(shù)為100。在程序中,使用了ed dd pn m1 * y e d sid ai bi fi 等變量,其意義與前面的變量一樣。對繪制的網(wǎng)圖有效放大和縮小功能,即點擊鼠標左鍵放大圖形,點擊右鍵縮小圖形,利用MATLAB菜單本身的功能,可以將該圖形輸出為各種圖形文件格式。2誤差橢圓的繪制無論多么復(fù)雜

36、的圖形,其根本單元還是點和線。換句話說,只需要利用根本元素的點或線,通過各種組合,也能畫出復(fù)雜的圖形。MATLAB中沒有提供直接繪制橢圓的命令,因此可以直接利用連線來畫橢圓。測量中描述誤差橢圓用長半軸A,短半軸B和方位角FI三個量。在如圖4-1的*Oy中直角坐標系中,橢圓的標準方程為4-1如果以角度i為變量,則橢圓的標準參數(shù)方程為4-2設(shè)在測量坐標系*Oy中橢圓長半軸的方位角為,則有4-3 用參數(shù)方程代入,得到4-4測量坐標系與MATLAB或AUTOCAD繪制的數(shù)學坐標系的*,y坐標軸不同,繪圖時,需要調(diào)換*,y坐標。在上式中,i取不同的值,就有一組*,y,只需要將這些點連接起來,就可以繪出一

37、個橢圓。圖4-2 誤差橢圓的參數(shù)方程4.4 測邊網(wǎng)程序和使用說明使用本程序的全部數(shù)據(jù)都按規(guī)定的格式編輯成數(shù)據(jù)文件儲存在磁盤上。數(shù)據(jù)文件的編輯取決于平差網(wǎng)型和觀測值的編號,為此,先繪制平差網(wǎng)的略圖,在圖上標明各項數(shù)據(jù)的信息。以下就測邊網(wǎng)的點號,邊編號,輸入數(shù)據(jù),輸出成果,運行程序等問題作簡明說明。1 點號和觀測邊的編號點和待定點的編號為pn取三為數(shù),點在前,未知點在后,其順序無要求。但為了減小法方程系數(shù)的帶寬,應(yīng)使相臨的待定點編號的差數(shù)盡可能小。平差網(wǎng)的編號見圖4-3。2.推算近似坐標的路線近似坐標的路線是用戶在測邊網(wǎng)略圖上指定出來的。如圖4-3的箭頭,就是表示推算路線。路線的兩個起算點必須為點

38、,從兩個推算出的第一個未知點開場,選擇觀測邊,由觀測邊和已求得的近似坐標或坐標推算出觀測邊所對的未知點。本程序是按推算的三個點A、B、P順序為順時針。圖4-3 測邊網(wǎng)略圖2 數(shù)據(jù)的輸入1簡單變量 為了在程序運行中數(shù)據(jù)的傳遞,定義了一些全局變量,參見4-1表。2數(shù)據(jù)文件外業(yè)測量的數(shù)據(jù)首先應(yīng)進展預(yù)處理,包括測站平差、歸心計算、觀測值歸化到橢球面的改正、橢球面歸化到高斯平面的改正等,然后將預(yù)處理后的數(shù)據(jù)輸入到以后綴名為T*T的文本文件中,該數(shù)據(jù)文件的組織格式如表4-1。3 輸出成果本程序的計算成果是以文件的形式輸出到文本文件中,用戶可以在文本中查看和編輯。程序代碼說明:程序的總體框架圖4-4測邊網(wǎng)總

39、體流程圖1數(shù)據(jù)讀入塊本模塊的功能是翻開一個*.t*t的數(shù)據(jù)文件,同時生成一個*out.t*t的文本文件,記錄用戶數(shù)據(jù)和輸出成果用。程序調(diào)用fscanf函數(shù)把文件中的數(shù)據(jù)賦值給相應(yīng)的變量,這些變量是后面計算的數(shù)據(jù)依據(jù)。近似坐標的計算測邊網(wǎng)的觀測數(shù)據(jù)是邊長,所以在近似坐標的計算時只能用測邊交會計算。以及A、B兩點坐標及A、B到P點的距離b、a,c為A、B兩點的距離,A、B、P三點按順時針排列。則P點的坐標計算公式如下:計算近似坐標的流程圖入圖4-5。圖4-5 計算近似坐標流程圖誤差方程和法方程的形成程序中,用數(shù)組a來存儲誤差方程的編號和系數(shù),a(i,9)存儲常數(shù)項,w和c分別存儲法方程系數(shù)和法方程

40、常數(shù)。4解算法方程。 函數(shù)流程圖如圖4-6。函數(shù)的代碼見附錄三。5精度評定 本模塊包括坐標改正數(shù)、單位權(quán)中誤差和誤差橢圓的計算。程序中定義了d*y坐標改正數(shù)、pvv即存儲、uw0(單位權(quán)中誤差)等。同時計算出誤差橢圓的三個參數(shù)長半軸ai,短半軸bi和主軸方向fi。圖4-6 平方根法求逆程序框架圖控制網(wǎng)的繪制程序中調(diào)用inputdlg函數(shù)來翻開一個對話框來輸入誤差橢圓的參數(shù);用te*t函數(shù)來對點號標注;用ploth函數(shù)及控制參數(shù)繪制線和誤差橢圓。程序的完全代碼見附錄二。4.6 程序的使用算例 有測邊網(wǎng)如圖4-3所示。網(wǎng)中A、B、C、C點,其余為未知點,現(xiàn)用*測距儀觀測了13條邊長,測距精度。起算

41、數(shù)據(jù)和觀測數(shù)據(jù)如下:表4-3 點坐標點名*Y點名*YA53743.13661003.826C40049.22953782.79B47943.00266225.854D36924.72861027.086表4-4 觀測值編號邊觀測值編號邊觀測值編號邊觀測值15760.70668720.162115487.07325187.34275598.57128884.58737838.8887494.881137228.36745483.15897493.32355731.788105438.3821.編輯數(shù)據(jù)文本文件如下列圖圖4-7 數(shù)據(jù)文件 2.在MATLAB命令窗口鍵入nnbb執(zhí)行程序,運行中會彈出

42、一個對話匡提示用戶輸入誤差橢圓的放大比例,默認為100,本例選擇500。如下列圖圖4-8a 對話框圖4-8b 對話框 3.計算出的結(jié)果如下:在圖4-9a中,第1、2行分別是點和未知的個數(shù);第4行是點的編號;第5至第8行是點的坐標;第10行是觀測值的個數(shù);第12行是測距的固定誤差和比例誤差;13至25行是觀測邊的起點號、終點號和觀測邊長;27至39行接到圖4-9b是點號轉(zhuǎn)換為計算機順序后的觀測邊起點號、終點號和觀測邊長。接圖4-9a,在圖4-9b中,第42至49行是推算的近似坐標;第52至64行是計算的誤差方程系數(shù)和常數(shù)。在圖4-9中,第67至70行是法方程的系數(shù)上三角一維存儲;第73至76行是

43、求逆后的法方程系數(shù);第79至86是坐標改正數(shù)和坐標平差值;第89至92行是誤差橢圓的參數(shù);第95行是單位權(quán)中誤差。圖4-9a計算結(jié)果圖4-9b 計算結(jié)果圖4-9c計算結(jié)果-. z.4.輸出的控制網(wǎng)圖和誤差橢圓圖如下:圖4-10 控制網(wǎng)圖結(jié)論由本論文的兩個程序例子解算過程不難發(fā)現(xiàn),程序的平原理和其它高級語言編寫的程序大致一樣的。但MATLAB語言本身就有獨特的數(shù)值計算功能和圖形繪制功能,這使它不用編寫專門的函數(shù)而直接處理和計算測量的數(shù)據(jù),這就大大縮短了編程的時間。MATLAB軟件將人們從乏味的Fortran、C編程中解放出來,使他們真正的把精力放在科學研究的核心問題上。但用MATLAB語言編程本

44、身也有它的缺乏之處:1.由于MATLAB是一個解釋器,會逐行對程序代碼進展解釋后執(zhí)行,當要處理的數(shù)據(jù)量很大時,計算機的運行速度明顯變慢了好多。2.用MATLAB進展界面開發(fā)時沒有像其他面向?qū)ο笳Z言方便。針對上面的問題,提出一些見解:1.為了提高整體程序的執(zhí)行效率,應(yīng)盡量多使用向量化的運算,而防止或少用for循環(huán)、while循環(huán)。事實上,如果程序是純粹的數(shù)值運算、而沒有使用for循環(huán)或while循環(huán),則其執(zhí)行速度將會接近于純粹用C語言來寫的程序代碼。2.雖然MATLAB是一個完整的科學計算與可視化環(huán)境,但在多數(shù)情況下,如MATLAB編程的代碼執(zhí)行效率不佳、你希望隱藏你的程序代碼以保護產(chǎn)權(quán)、或您想

45、要進展任何只有在*些高級語言程序才能做到的事,這時就需要用MATLAB所提供的應(yīng)用程序接口。-. z.致 本論文是在導(dǎo)師吳良才教授的熱忱關(guān)心和細心指導(dǎo)下完成的。從論文選題到最后的成文,無不凝結(jié)著導(dǎo)師的心血。導(dǎo)師開拓創(chuàng)新的精神、嚴謹踏實的治學態(tài)度以及寬厚的為人都使我深受熏陶,并將使我終身受益。在此謹向?qū)熤乱灾孕牡母兄x和誠摯的敬意。此外,也感謝測繪專業(yè)的全體教師,正因為有了他們的虛心教誨,使我的知識得到一點一滴的積累,才沉著的完成今天的畢業(yè)設(shè)計。-. z.參考文獻1 *明理. 控制測量手冊. : *科學技術(shù), 1999.1.2 吳俊昶. 控制網(wǎng)測量平差2版. : 測繪, 1998.1.3 譚 輝

46、. 測量程序與新型全站儀的應(yīng)用. : 機械工業(yè), 2006.4 孔祥元, 梅是義. 控制測量學下冊2版. : *大學, 2002.2.5 *大學測繪學院測量平差學科組. 誤差理論與測量平差根底. : *大學, 2003.1.6 *智星. MATLAB程序設(shè)計與應(yīng)用. : 清華大學, 2002.4.7 郭九訓. 控制網(wǎng)平差程序設(shè)計. : 原子能, 2004.8.8 姚連壁, 周小平. 基于MATLAB的控制網(wǎng)平差程序設(shè)計. : 同濟大學, 2006.6.9 清源計算機工作室. MATLAB 根底及其應(yīng)用M. :機械工業(yè), 2000.10 程衛(wèi)國,峰,東, 徐昕, 等. MATLAB 5.3 應(yīng)用

47、指南M . : 人民郵電, 1999.11 CHAI Yan2jun , et al . Quasi2accurate Detection Methodsof Gross Errors with MATLAB Language J . Journal ofShandong University of Science and Technology (NatureScience) , 2000 , (3)12 NIE Gui2gen. Application of MATLAB to Surveying Da2ta Processing J . Bulletin of Surveying andM

48、apping ,2001 , (2)-. z.附錄一水準網(wǎng)平差程序代碼:function level3ed,dd,sd,gd,pn,h0,k1,k2,h1,s=readlevelnetdata;global pathname net_name s_datafile a1_datafile;global ed dd sd pn gd h0 k1 k2 h1 s dh;dh,h,V,L,uw0,uwh,uw1=calculatelevelnet(ed,dd,sd,pn,gd,h0,k1,k2,h1,s);writelevelnetdata(pn,k1,k2,h1,V,L,h0,dh,h,uwh,u

49、w0); %輸出水準網(wǎng)計算結(jié)果returnfunctiondh,h,V,L,uw0,uwh,uw1=calculatelevelnet(ed,dd,sd,pn,h0,be,en,hd,distance);% 水準平差網(wǎng)A=sparse(zeros(sd,gd); %求解系數(shù)陣b=(0:(gd-1)*sd);A(be+b)=-1;A(en+b)=1;A=A;A=A(:,1:dd);l=zeros(gd,1); %求解常數(shù)項l=h0(be)-h0(en)+hd;p=diag(1./distance); %權(quán)陣dh=inv(A*p*A)*A*p*1; %高程改正數(shù)h00=h0(dd+1:sd);h0

50、=h0(1:dd); %待定點高程近似值h=h0+dh; %待定點高程平差值V=A*dh-1; %高差觀測值改正數(shù)L=hd+V; %高差觀測值平差值%精度評定uw0=sqrt(V*p*V/(gd-dd); %單位權(quán)中誤差Q*=inv(A*p*A);uwh=uw0*sqrt(diag(Q*); %待定點高程平差值中誤差uwh(dd+1:ed+dd)=0.0;Qff=A*Q*A;uwh=uw0*sqrt(diag(Qff); %高差平差值中誤差h=h;h00; %所有點高程h0=h0;h00;dh=dh;zeros(ed,1);returnfunction ed,dd,sd,gd,pn,h0,k1

51、,k2,h1,s=readlevelnetdata;global pathname net_name s_datafile b_datafile;global ed dd sd pn gd h0 k1 k2 h1 s k11 k12;k1=;k2=;h=;s=;if(isempty(pathname)|isempty(net_name) filename,pathname=uigetfile(*.t*t,Input filename); i=find(.=filename); net_name=filename(1:i-1);endfid1=fopen(strcat(pathname,net_

52、name,s_datafile),rt);if(fid1=-1) msgbo*(Input File or Path is not correct,Warning,warn); return;end %open afile to read%open afile to readed=fscanf(fid1,%f,1); %點個數(shù)dd=fscanf(fid1,%f,1); %未知點個數(shù)sd=ed+dd; %總點數(shù)gd=fscanf(fid1,%f,1); %觀測點個數(shù)pn=fscanf(fid1,%f,sd); %點號%known datah0=fscanf(fid1,%f,ed); %點高程h0

53、(dd+1:ed+dd)=h0(1:ed)heightdiff=fscanf(fid1,%f,4,gd);heightdiff=heightdiff;k1=heightdiff(:,1); %起點k2=heightdiff(:,2); %終點k11=heightdiff(:,1); %起點k12=heightdiff(:,2); %終點h1=heightdiff(:,3); %高差s=heightdiff(:,4); %距離fclose(all);%點號轉(zhuǎn)換k1,k01=chkdat(sd,pn,k1);k2,k02=chkdat(sd,pn,k2);h0(1:dd)=20000.;ie=0;

54、while(1)%計算近似高程 for k=1:gd i=k1(k); j=k2(k); if(h0(i)le4) h0(j)=h0(i)+h1(k); ie=ie+1; end if(h0(i)le4&h0(j)0) fprintf(fit2,siden); a=fscanf(fit1,%f,2); ms=a(1); pp=a(2); fprintf(fit2,%6.2f %6.2fn,ms,pp); a=fscanf(fit1,%d %d %f,3*m1); for i=1:m1 e(i)=a(3*i-2);d(i)=a(3*i-1);sid(i)=a(3*i); fprintf(fit2

55、,%5d %5d %15.3fn,e(i),d(i),sid(i); end e,i1=chkdat(sd,pn,e); d,i2=chkdat(sd,pn,d); i3=0; for i=1:m1; if(e(i)=d(i) i3=1; fprintf(fit2,* * %5d %5d %5d * *n,i,e(i),d(i); end fprintf(fit2,%5d %5d %15.3fn,e(i),d(i),sid(i); end isid=i1+i2+i3;endidir=0;kk=isid if(kk0) msgbo*(Error by function rddat1,Warnin

56、g,warn); return;end%近似坐標計算*yknow(1:ed)=pn1(1:ed);*yunknow(1:dd)=pn1(ed+1:sd); aa=fscanf(fit1,%d,2); A=aa(1);B=aa(2); mn=fscanf(fit1,%d,1); bb=fscanf(fit1,%d,mn); m=bb; for i=1:length(m) if i=1 if e(m(i)=A|e(m(i)=B P=d(m(i); else P=e(m(i); end else if e(m(i-1)=A|d(m(i-1)=A B=P; else A=P; end if e(m(i

57、)=A|e(m(i)=B P=d(m(i); else P=e(m(i); end end for j=1:m1 if (e(j)=P|d(j)=P)&(d(j)=A|e(j)=A) s1=sid(j); end if (e(j)=P|d(j)=P)&(d(j)=B|e(j)=B) s2=sid(j); end end delt*=*0(B)-*0(A); delty=y0(B)-y0(A); alfaAB=alfa(delt*,delty) ; ss=sqrt(delt*delt*+delty*delty); ee=(s1*s1+ss*ss-s2*s2)/(2*ss);ff=sqrt(s1*

58、s1-ee*ee); *0(P)=*0(A)+ee*cos(alfaAB)-ff*sin(alfaAB); y0(P)=y0(A)+ee*sin(alfaAB)+ff*cos(alfaAB); end fprintf(fit2,n); fprintf(fit2,計算的近似坐標n); for i=1:sd fprintf(fit2,%15.3f %15.3f n,*0(i),y0(i); end% k=1;while(k) lo=2062.4; n=2*dd; sum=n*(n+1)/2.0; sd=ed+dd; a=; a(1:m1,1:9)=0.0; c(1:sum)=0.0; w(1:n)

59、=0.0;fprintf(fit2,誤差方程系數(shù)和常數(shù)項 n); for i=1:m1 %邊長觀測誤差方程 d*=*0(d(i)-*0(e(i); dy=y0(d(i)-y0(e(i); ss=sqrt(d*d*+dy*dy); cosa=d*/ss; sina=dy/ss; a(i,1)=2*e(i)-1-2*ed+1.0e-9; a(i,2)=-cosa; a(i,3)=a(i,1)+1; a(i,4)=-sina; a(i,5)=2*d(i)-1-2*ed+1.0e-9; a(i,6)=cosa; a(i,7)=a(i,5)+1; a(i,8)=sina; a(i,9)=10.0*(ss

60、-sid(i); %ql(i)=(ms2+(ss*pp*0.0001)2); ql(i)=(ms+ss*pp*0.001); ql(i)=100/ql(i)2; fprintf(fit2,%15.3f %15.3f %15.3f %15.3f %15.3f %15.3f %15.3f %15.3f %15.3f n,a(i,:); end% fprintf(fit2,%15.3f n,ql); for i=1:m1 %形成法方程 for j=1:4 jj=fi*(a(i,2*j-1); if(jj=0) continue; end w(jj)=w(jj)+a(i,2*j)*a(i,9)*ql(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論