測繪工程畢業(yè)論文-基于MATLAB的測量基礎(chǔ)工具箱開發(fā)_第1頁
測繪工程畢業(yè)論文-基于MATLAB的測量基礎(chǔ)工具箱開發(fā)_第2頁
測繪工程畢業(yè)論文-基于MATLAB的測量基礎(chǔ)工具箱開發(fā)_第3頁
測繪工程畢業(yè)論文-基于MATLAB的測量基礎(chǔ)工具箱開發(fā)_第4頁
測繪工程畢業(yè)論文-基于MATLAB的測量基礎(chǔ)工具箱開發(fā)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1第1章緒論1.1選題原因MATLAB語言被稱為第四代計(jì)算機(jī)語言,因?yàn)槠鋼碛衅渌幊陶Z言所不具有的特點(diǎn)。它使人們擺脫了復(fù)雜的程序代碼,告別了繁復(fù)的計(jì)算機(jī)硬件操作。而導(dǎo)線平差計(jì)算中,矩陣運(yùn)算巨大且頻繁,因此采用MATLAB語言可以大大減少工作量。1.2MATLAB對測量數(shù)據(jù)進(jìn)行處理的應(yīng)用測繪科學(xué)是一門需要對數(shù)據(jù)進(jìn)行處理分析與應(yīng)用為基礎(chǔ)性的學(xué)科,其中包含了如平差、各種坐標(biāo)高程換算、遙感圖像處理等,需要進(jìn)行大量的計(jì)算。作為一種程序設(shè)計(jì)工具,MATLAB處理海量數(shù)據(jù)比其他程序設(shè)計(jì)語言擁有難以比擬的優(yōu)越性。在面對矩陣運(yùn)算和巨量的數(shù)據(jù)時,這時如果用C等第三代計(jì)算機(jī)語言來編寫程序?qū)?shù)據(jù)分析處理時,耗費(fèi)的時間和精力是巨大的,而且很容易犯錯。而用MATLAB進(jìn)行編程時,僅僅需要調(diào)用一個函數(shù)或者一個命令即可,極大的減少了工作量,大大的提高了程序的編寫效率。例如:坐標(biāo)轉(zhuǎn)換是對轉(zhuǎn)換系數(shù)的求解,即可簡化為:

(1.1)采用別的編程語言,

則程序的編寫工作復(fù)雜且繁瑣,而在 MATLAB

中只需采用矩陣除法符號“/

”,即:

(1.2)根據(jù)一定的控制點(diǎn)求出轉(zhuǎn)換矩陣T后,即可用矩陣相乘形式將所有待轉(zhuǎn)換點(diǎn)的新坐標(biāo)求出來,計(jì)算過程簡單,可以直接由語言實(shí)現(xiàn)。

同樣,MATLAB對測量數(shù)據(jù)、遙感影像的頻域分析都可以輕松寫意的完成,傅立葉變換函數(shù)對測量數(shù)據(jù)分析提供了扎實(shí)可靠的方法,其自帶的小波分析工具箱對小波數(shù)據(jù)分析提供了便利的工具。1.3本文主要研究內(nèi)容本文基于MATLAB進(jìn)行測量基礎(chǔ)工具箱開發(fā),其中包括的內(nèi)容有:(1)支導(dǎo)線平差程序設(shè)計(jì)(2)閉合導(dǎo)線平差程序設(shè)計(jì)(3)空間大地坐標(biāo)與直角坐標(biāo)轉(zhuǎn)換第2章支導(dǎo)線平差程序設(shè)計(jì)2.1導(dǎo)線測量誤差來源2.1.1系統(tǒng)誤差系統(tǒng)誤差是與分析過程中某些固定的原因引起的一類誤差,它具有重復(fù)性、單向性、可測性。在相同的環(huán)境下,反復(fù)測量會重復(fù)出現(xiàn),誤差大小具有一定規(guī)律。比如,即使測定精度不同,但是因?yàn)橄到y(tǒng)誤差,使得測量結(jié)果和真實(shí)結(jié)果偏離很明顯。如果找出誤差原因和大小,那么系統(tǒng)誤差可以消除或減少的。(1)儀器誤差是由儀器制造過程中缺陷或者使用條件不當(dāng)造成。如儀器的零點(diǎn)不準(zhǔn),儀器未調(diào)整好和外界環(huán)境綜合導(dǎo)致的誤差。(2)理論誤差(方法誤差)是由實(shí)驗(yàn)本身?xiàng)l件有限或者測量依據(jù)理論近似性、實(shí)驗(yàn)方法本身不完善所帶來的誤差。例如熱學(xué)實(shí)驗(yàn)中未考慮到散熱條件導(dǎo)致的熱量損失,電阻測量中未考慮電表內(nèi)阻等因素對實(shí)際結(jié)果的影響。(3)操作誤差這是因?yàn)橛^測者個人原因?qū)е碌恼`差,和觀測者的狀態(tài)和身體條件有關(guān)。(4)試劑誤差是指實(shí)驗(yàn)過程中使用試劑不純含有雜質(zhì)導(dǎo)致的測定結(jié)果與實(shí)際結(jié)果不相符導(dǎo)致的誤差。系統(tǒng)誤差有些是定值的,如儀器的零點(diǎn)不準(zhǔn),有些是積累性的,如用受熱膨脹的鋼質(zhì)米尺測量時,讀數(shù)就小于其真實(shí)長度。需要注意的是,系統(tǒng)誤差總是使測量結(jié)果偏向一邊,或者偏大,或者偏小,因此,多次測量求平均值并不能消除系統(tǒng)誤差。電腦在進(jìn)行數(shù)據(jù)處理的過程中,也會有誤差,如在處數(shù)據(jù)型字段的時候,由于處理位數(shù)的不一樣,所得結(jié)果是有誤差的,與我們計(jì)算中采用四舍五入法得出的結(jié)果類似。2.1.2偶然誤差隨機(jī)誤差(又稱偶然誤差)是指測量結(jié)果與同一待測量的大量重復(fù)測量的平均結(jié)果之差。“同一待測量的大量重復(fù)測量的平均結(jié)果”指在重復(fù)條件下得到待測量的期望值或所有可能測得值的平均值。它的特點(diǎn):大小和方向都不固定,也無法測量或校正。隨機(jī)誤差的性質(zhì)是:隨著測定次數(shù)的增加,正負(fù)誤差可以相互抵償,誤差的平均值將逐漸趨向于零即便測試系統(tǒng)的響應(yīng)度敏感度非常高,在同樣的觀測條件下,對同一數(shù)值進(jìn)行多次相同條件下測量時,依然會有偶然情況發(fā)生,因?yàn)椴豢深A(yù)計(jì)的不確定條件干擾而產(chǎn)生測量誤差,其結(jié)果和正負(fù)均不可預(yù)知。即使一次測量的隨機(jī)誤差沒有一定規(guī)律可言,但多次測量的結(jié)果分析卻服從統(tǒng)計(jì)學(xué)規(guī)律,通過對結(jié)果的集中統(tǒng)計(jì)處理,能在理論上對于測量結(jié)果進(jìn)行預(yù)計(jì)和評估。隨機(jī)誤差不能用修正或采取某種技術(shù)措施的辦法來消除。測量值的隨機(jī)誤有以下分布方式:正態(tài)分布、t分布、三角分布和均勻分布等,不過絕大部分測量值都服從正態(tài)分布這一統(tǒng)計(jì)學(xué)規(guī)律,因此主要以正態(tài)分布為主進(jìn)行介紹。

測量值的隨機(jī)誤差δ是隨機(jī)變量,它的概率分布密度函數(shù)為:(3.1)式中exp()表示以e為底的指數(shù)函數(shù),pi表示圓周率,σ表示隨機(jī)誤差的標(biāo)準(zhǔn)偏差。√表示根號隨機(jī)誤差具有以下規(guī)律:(1)大小性:絕對值小的誤差出現(xiàn)的概率比絕對值大的誤差出現(xiàn)的概率大。(2)對稱性:絕對值相等的正誤差和負(fù)誤差出現(xiàn)的概率相等。(3)有界性:絕對值很大的誤差出現(xiàn)的概率近于零。誤差的絕對值不會超過某一個界限。(4)抵償性:在一定測量條件下,測量值誤差的算術(shù)平均值隨著測量次數(shù)的增加而趨于零。2.2支導(dǎo)線平差原理由一已知具體坐標(biāo)數(shù)據(jù)的控制點(diǎn)向一已知方向出發(fā),既不回到原點(diǎn),也不附和到另一已知控制點(diǎn)上,這種導(dǎo)線稱為支導(dǎo)線。由于支導(dǎo)線缺乏檢核條件,故其邊數(shù)一般不超過四條,它僅適用于圖根控制點(diǎn)加密。

不過在實(shí)際應(yīng)用中,如礦井隧道貫通測量中,由于該地所處的地理?xiàng)l件所限制必須采用此種布設(shè)形式,這時可考慮布設(shè)成雙支導(dǎo)線的形式。將兩條支導(dǎo)線的一點(diǎn)或幾點(diǎn)重合,外業(yè)觀測與閉合導(dǎo)線觀測方法相同,在重合點(diǎn)上只需設(shè)站一次即可。內(nèi)業(yè)計(jì)算時可按兩條支導(dǎo)線單獨(dú)進(jìn)行,也可按閉合導(dǎo)線的方法進(jìn)行,比較重合點(diǎn)和終點(diǎn)的坐標(biāo)值而得到檢核。設(shè)直線MA的坐標(biāo)方位角和邊長,計(jì)算各導(dǎo)線邊的坐標(biāo)方位角。由各邊的坐標(biāo)方位角和邊長,計(jì)算各相鄰導(dǎo)線點(diǎn)的坐標(biāo)增量。并依次推算各導(dǎo)線點(diǎn)的坐標(biāo)。往返測兩次,將得到的兩個坐標(biāo)取平均值,得到最終的坐標(biāo)值X、Y。2.3支導(dǎo)線平差程序界面及流程圖軟件界面由未知點(diǎn)數(shù),邊長角度觀測數(shù),邊長距離觀測數(shù),已知點(diǎn)數(shù)組成,其中數(shù)據(jù)由讀取文件自動生成。按鍵部分由讀取文件,計(jì)算并生成文件,繪圖三個按鍵組成,其中讀取文件讀取excel表中數(shù)據(jù),,計(jì)算并生成按鍵進(jìn)行計(jì)算,并生成txt文件,繪圖按鍵在軟件中自動進(jìn)行繪圖。圖2-1支導(dǎo)線平差設(shè)計(jì)界面起算已知點(diǎn)起算已知點(diǎn)計(jì)算起算方位角計(jì)算起算方位角角度觀測值角度觀測值計(jì)算下一條邊方位角計(jì)算下一條邊方位角計(jì)算下一點(diǎn)坐標(biāo)計(jì)算下一點(diǎn)坐標(biāo)距離觀測值距離觀測值所有點(diǎn)計(jì)算完畢所有點(diǎn)計(jì)算完畢 否 是全部坐標(biāo)點(diǎn)全部坐標(biāo)點(diǎn)圖2-2支導(dǎo)線流程圖2.4計(jì)算實(shí)例計(jì)算原始數(shù)據(jù)為已知點(diǎn),觀測點(diǎn)數(shù)據(jù)。表2-1原始數(shù)據(jù)輸入格式已知點(diǎn)數(shù)m未知點(diǎn)數(shù)dd邊長觀測數(shù)f角度觀測數(shù)p1333支導(dǎo)線平差點(diǎn)號已知點(diǎn)坐標(biāo)坐標(biāo)方位角X/mY/m度分秒A11768.718419.2422742334邊號導(dǎo)線邊長觀測值/m角號角度觀測值(度分秒)s1221.651864316s2195.84321822243s3229.35631885957s1221.591864310s2195.80421822245s3229.34531885955本題有1個已知點(diǎn),共3個未知點(diǎn),3條邊長,3個角度觀測數(shù),將觀測數(shù)據(jù)導(dǎo)入到程序內(nèi)計(jì)算,得到結(jié)果為:圖2-3數(shù)據(jù)輸出結(jié)果圖2-4軟件輸出結(jié)果第3章閉合導(dǎo)線平差程序設(shè)計(jì)3.1閉合導(dǎo)線平差原理圖3-1閉合導(dǎo)線示意圖閉合導(dǎo)線是導(dǎo)線測量的一種,根據(jù)測量夾角和邊長,推算出平面坐標(biāo)的測量稱為導(dǎo)線測量,常用的導(dǎo)線測量還包括附和導(dǎo)線和支導(dǎo)線。閉合導(dǎo)線就是已知一條邊,測量若干個邊長和夾角后又閉合到已知邊的導(dǎo)線測量方法。通過計(jì)算平差后,可計(jì)算得到經(jīng)過的未知點(diǎn)的平面坐標(biāo)。設(shè)對閉合導(dǎo)線n個內(nèi)角分別進(jìn)行了觀測,各個符號精度要求的觀測值為,并對閉合多邊形的n個邊長分別進(jìn)行了測量,各個符號精度要求的觀測值為;其中一個導(dǎo)線點(diǎn)的坐標(biāo)為;確定其余各個導(dǎo)線點(diǎn)的坐標(biāo),。3.2閉合導(dǎo)線平差數(shù)學(xué)模型3.2.1角度閉合差的計(jì)算調(diào)整(1)實(shí)測角度閉合差的計(jì)算閉合導(dǎo)線n個實(shí)測內(nèi)角的和不等于其理論值(n-2)*180,其差稱為角度閉合差以表示:(4.1)(2)實(shí)測角度閉合差檢核角度閉合差校核是將實(shí)測角度閉合差也同級導(dǎo)線角度閉合差的容許值,按各級導(dǎo)線測量主要技術(shù)要求比較,以確定角度綜合限差是否滿足要求。這里角度綜合限差采用圖根導(dǎo)線數(shù)據(jù),即=40(4.2)(3)角度閉合差的調(diào)整若≤,則可以進(jìn)行角度閉合的調(diào)整,否則,應(yīng)分析情況重測。角度閉合差的調(diào)整原則是,將以相反的符號平均分配到各個觀測角中,即各點(diǎn)改正數(shù)為式=/(4.3)計(jì)算時,根據(jù)角度的取位的要求,改正數(shù)可湊整到1″、6″、10″.若不能均分,一般情況下,因短邊角引起的誤差較大,因此給短邊角的夾角多分配一點(diǎn),使各角改正數(shù)的總和也反號的閉合差相等,即(4.4)3.2.2推算各邊的坐標(biāo)方位角推算各邊的坐標(biāo)方位角目的是為了計(jì)算坐標(biāo)增量。推算方法根據(jù)起始方位角及改正后的轉(zhuǎn)折角,按式依次推算出各邊的坐標(biāo)方位角。(4.5) (4.6)式中:第i條邊的正方位角第i+1條的正方位角分別為第i-1條邊與第i條邊間所夾的左右角。在推算過程中,如果算出>360°,則應(yīng)減去360°如果算出的<0°,則應(yīng)加上360°為了發(fā)現(xiàn)推算過程中的差錯,最后必須推算至起始邊的坐標(biāo)方位角,看其是否與已知值相等,以此作為計(jì)算校核。3.2.3坐標(biāo)增量閉合差的計(jì)算和調(diào)整(1)計(jì)算實(shí)測各邊的坐標(biāo)增量設(shè)第i條實(shí)測邊的終、橫坐標(biāo)增量分別為(4.7)(4.8)(2)確定理論縱、橫坐標(biāo)增量∑△Xi理、∑△Yi理閉合導(dǎo)線的縱橫坐標(biāo)增量總和的理論值應(yīng)為零,則有(3)計(jì)算坐標(biāo)增量閉合差fx.fy由于測量誤差,改正后的角度仍有殘余誤差,坐標(biāo)增量總和的測量計(jì)算值∑△X測與∑△Y測一般都不為零,其值稱為坐標(biāo)增量閉合差,fx.fy表示(4)計(jì)算導(dǎo)線全長閉合差f并檢核全長相對閉合差K因計(jì)算的閉合導(dǎo)線并不閉合,而存在一個缺口,這個缺口的長度稱為導(dǎo)線閉合差f(4.9)導(dǎo)線越長,全長閉合差也越大。通常用相對閉合差來衡量導(dǎo)線測量的精度,導(dǎo)線的全長相對閉合差按== (4.10)試中∑L為導(dǎo)線邊長的總和。導(dǎo)線的全長相對閉合差應(yīng)滿足規(guī)定。否則應(yīng)先檢查記錄和全部業(yè)內(nèi)作業(yè)計(jì)算,必要時到現(xiàn)場檢查,重測部分或全部結(jié)果。若K值符合精度要求,則可將增量閉合差fx.fy以相反符號。按與邊長成正比分配到各個增量中。(5)計(jì)算各條邊的改正數(shù).任意一邊分配的改正數(shù).按式==改正數(shù)應(yīng)按增量取位的要求湊整至cm或mm,并且必須使改正數(shù)的總和與反符號閉合差相等,即(6)確定各個邊長改正后的坐標(biāo)增量坐標(biāo)增量計(jì)算值(△Xi算、△yi算)又式(4.11)(4.12)3.2.4計(jì)算各個導(dǎo)線點(diǎn)的坐標(biāo)i+1.i+1.(4.13)(4.14)閉合導(dǎo)線坐標(biāo)計(jì)算是按一定得次序在表中進(jìn)行,如果導(dǎo)線未與高級控制點(diǎn)連接,則起算點(diǎn)的坐標(biāo)可自行假設(shè)。為了檢查坐標(biāo)推算中的差錯,最后還應(yīng)推回到起算的坐標(biāo),看其是否和已知值相等,以此作為計(jì)算校核。3.3閉合導(dǎo)線平差步驟及流程圖閉合導(dǎo)線平差計(jì)算步驟:(1)繪制計(jì)算草圖,在圖上填寫已知數(shù)據(jù)和測量數(shù)據(jù)。并建立excel表按照指定格式將已知數(shù)據(jù)和測量數(shù)據(jù)輸入到規(guī)定的項(xiàng)目欄里。(2)角度閉合差的計(jì)算與調(diào)整。(3)按照新的角度,計(jì)算各邊坐標(biāo)的增加量。(4)坐標(biāo)增加量閉合差的計(jì)算與調(diào)整。(5)根據(jù)坐標(biāo)增量計(jì)算坐標(biāo)。角度觀測值計(jì)算角度閉合差是否角度觀測平差重新觀測起算點(diǎn)已知計(jì)算起算方位角計(jì)算各邊方位角計(jì)算起算點(diǎn)坐標(biāo)不符值計(jì)算各點(diǎn)近似坐標(biāo)是否超限按權(quán)分配坐標(biāo)不符值平差后坐標(biāo)距離觀測值角度觀測值計(jì)算角度閉合差是否角度觀測平差重新觀測起算點(diǎn)已知計(jì)算起算方位角計(jì)算各邊方位角計(jì)算起算點(diǎn)坐標(biāo)不符值計(jì)算各點(diǎn)近似坐標(biāo)是否超限按權(quán)分配坐標(biāo)不符值平差后坐標(biāo)距離觀測值 是 否 是 否圖3-2閉合導(dǎo)線程序流程圖3.4界面設(shè)計(jì)及運(yùn)行實(shí)例程序界面輸入數(shù)據(jù):起始點(diǎn)x,y點(diǎn)坐標(biāo),后視點(diǎn)x,y點(diǎn)坐標(biāo),連接角,角度觀測數(shù),距離觀測數(shù)。這些數(shù)據(jù)通過讀取excel表自動填寫。并將觀測值輸出到角度觀測值和距離觀測值里面。通過計(jì)算按鈕將角度閉合差,限差,導(dǎo)線全長閉合差,限差,導(dǎo)線全長,平均邊長,平差后坐標(biāo)輸出到各個對應(yīng)文本框中。圖3-3閉合導(dǎo)線程序設(shè)計(jì)界面原始觀測數(shù)據(jù)導(dǎo)入,本例中共6個角度觀測數(shù),5個起算點(diǎn)坐標(biāo)。將數(shù)據(jù)導(dǎo)入程序后進(jìn)行計(jì)算。10674347.66614485053.78211444160.80293555360.316172101442.202885314100100175.66510065表3-1閉合導(dǎo)線觀測數(shù)據(jù)圖3-4閉合導(dǎo)線程序結(jié)果結(jié)束語本次畢業(yè)設(shè)計(jì)采用MATLAB的GUI編輯器編寫,不但易于上手,而且是可視化界面方便了界面設(shè)計(jì),具有易維護(hù)易操作等特點(diǎn)。而且利用MATLAB里豐富的數(shù)學(xué)公式,大大減少編碼工作量。在本次設(shè)計(jì)中,共完成了2個程序的設(shè)計(jì)分別是支導(dǎo)線平差程序設(shè)計(jì),閉合導(dǎo)線平差程序設(shè)計(jì)。通過編碼與調(diào)試,現(xiàn)在已經(jīng)能成功計(jì)算出結(jié)果。在導(dǎo)線平差的數(shù)據(jù)的處理和統(tǒng)計(jì)過程中涉及到大量的線性代數(shù)、方程組的求解等問題,使用MATLAB對這些軟件進(jìn)行處理是十分簡便的。在日常工作和學(xué)習(xí)中,一些較為常見的數(shù)據(jù)模型,在MATLAB中建立平差函數(shù),通過調(diào)用其函數(shù)來完成平差,可以極大的提高工作效率,減少工作量。同時,它操作簡便,上手容易,具有強(qiáng)大的圖形顯示功能并且很方便的可以進(jìn)行編輯。因此,無論是在學(xué)校學(xué)習(xí)還是工作實(shí)踐中,MATLAB都有著杰出的便利性和很高的實(shí)用價值。借助MATLAB開發(fā)的計(jì)算程序代碼簡潔易讀,與利用別的面向?qū)ο蟮拈_發(fā)語言開發(fā)的測量平差處理程序相比,可以減少軟件的開發(fā)時間,面對開發(fā)時間較少的開發(fā)任務(wù)也能輕松應(yīng)對。由于MATLAB中教學(xué)中的慣用形式與命令的表達(dá)十分一致,編程特點(diǎn)更加符合人們的思維形式。MATLAB為開發(fā)各種類型的數(shù)據(jù)處理系統(tǒng)提供了一種新的快捷方法。隨著MATLAB與測繪領(lǐng)域中數(shù)據(jù)處理問題的結(jié)合及相關(guān)應(yīng)用程序的開發(fā),它必將被越來越廣泛地應(yīng)用于測量數(shù)據(jù)的平差處理。附錄:程序主要代碼1支導(dǎo)線程序設(shè)計(jì)代碼1.1文件輸入程序functionpushbutton1_Callback(hObject,eventdata,handles)globalfilenamepathnamezdxsjf1globalXY0TOBO1S1BO2S2f1=fopen('zdxsj.txt','wt');[filename,pathname]=uigetfile('*.xls','打開數(shù)據(jù)');ifpathname==0returnendname=[pathname,filename];m=xlsread(name,'sheet1','A2');dd=xlsread(name,'sheet1','B2');f=xlsread(name,'sheet1','C2');p=xlsread(name,'sheet1','D2');q=10+f;qw=12+f;qwe=11+2*f;XY0=xlsread(name,'sheet1','B7:C7');TO=xlsread(name,'sheet1','E7:G7');BO1=xlsread(name,'sheet1','E11:G13');S1=xlsread(name,'sheet1','B11:B13');BO2=xlsread(name,'sheet1','E15:G17');S2=xlsread(name,'sheet1','B15:B17');set(handles.edit4,'string',p);set(handles.edit3,'string',f);set(handles.edit2,'string',dd);set(handles.edit1,'string',m);%hObjecthandletopushbutton1(seeGCBBO)%eventdatareserved-tobedefinedhandlesinafuturefutureversionversionofMATLAB%handlesstructurewithdefinedanduserdata(seeGUIIDATA)1.2計(jì)算及輸出程序代碼functionpushbutton2_Callback(hObject,eventdata,handles)globalmpfddhngef1;globalXY0TOa0BO1S1BO2S2s1s2dx1dy1dx2dy2x0y0ssx01y01ss1x02ss2y02;a0=[];s1=[];s2=[];dx1=[];dy1=[];dy2=[];x0=[];y0=[];ss=[];x01=[];y01=[];ss1=[];x02=[];y02=[];ss2=[];a1=[];A1=[];A2=[];dd=get(handles.edit4,'string');p=get(handles.edit3,'string');f=get(handles.edit2,'string');m=get(handles.edit1,'string');e=str2num(m);g=str2num(p);h=str2num(f);n=str2num(dd);fori=1:ea0(1,i)=TO(i,1)+((TO(i,3)/60)+TO(i,2))/60;endforj=1:ga1(1,j)=BO1(j,1)+((BO1(j,3)/60)+BO1(j,2))/60;a2(1,j)=BO2(j,1)+((BO2(j,3)/60)+BO2(j,2))/60;endfork=1:hs1(1,k)=S1(k,1);s2(1,k)=S2(k,1);endA1(1,1)=a0(1,1)+a1(1,1)-180;ifA1(1,1)>360A1(1,1)=A1(1,1)-360;endifA1(1,1)<0A1(1,1)=A1(1,1)+360;endfork=2:gA1(1,k)=A1(1,k-1)+a1(1,k)-180;%方位角ifA1(1,k)>360A1(1,k)=A1(1,k)-360;endifA1(1,k)<0A1(1,k)=A1(1,k)+360;endendfori=1:gdx1(1,i)=cos(A1(1,i)/180*pi)*s1(1,i);dy1(1,i)=sin(A1(1,i)/180*pi)*s1(1,i);x01(1,i)=XY0(1,1)+dx1(1,i);y01(1,i)=XY0(1,2)+dy1(1,i);ss1(1,i)=sqrt(dx1(1,i)^2+dy1(1,i)^2);endA2(1,1)=a0(1,1)+a2(1,1)-180;ifA2(1,1)>360A2(1,1)=A2(1,1)-360;endifA2(1,1)<0A2(1,1)=A2(1,1)+360;endfork=2:gA2(1,k)=A2(1,k-1)+a2(1,k)-180;ifA2(1,k)>360A2(1,k)=A2(1,k)-360;endifA2(1,k)<0A2(1,k)=A2(1,k)+360;endendfori=1:gdx2(1,i)=cos(A2(1,i)/180*pi)*s2(1,i);dy2(1,i)=sin(A2(1,i)/180*pi)*s2(1,i);x02(1,i)=XY0(1,1)+dx2(1,i);y02(1,i)=XY0(1,2)+dy2(1,i);ss2(1,i)=sqrt(dx2(1,i)^2+dy2(1,i)^2);endfori=1:gx0(i)=(x01(1,i)+x02(1,i))/2;y0(i)=(y01(1,i)+y02(1,i))/2;ss(i)=(ss1(1,i)+ss2(1,i))/2;endfprintf(f1,'近似坐標(biāo):\n');fprintf(f1,'ix01(i)y01(i)x02(i)y02(i)\n');fori=1:nfprintf(f1,'%5d%8.8f%8.8f%8.8f%8.8f\n',i,x01(i),y01(i),x02(i),y02(i));endfprintf(f1,'平差坐標(biāo):\n');fprintf(f1,'ix0(i)y0(i)\n');fori=1:nfprintf(f1,'%5d%8.8f%8.8f\n',i,x0(i),y0(i));endfprintf(f1,'邊長平差值:\n');fprintf(f1,'iss(i)\n');fori=1:nfprintf(f1,'%5d%8.8f\n',i,ss(i));end%hObjecthandletopushbutton2(seeGCCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIIDATA)1.3繪圖程序代碼Functionglobalpushbutton3_Callback(hObject,globaleventdata,globalhandles)globalx0y0XY0nMNM(1)=XY0(1,1);CN(1)=XY0(1,2);fori=1:nM(i+1)=x0(i);N(i+1)=y0(i);endplot(M,N,'-^k','LineWidth',2,'MarkerEdgeColor','r','MarkerSize',6);%hObjecthandletopushbutton3(seeGCCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUICDATA)2閉合導(dǎo)線程序設(shè)計(jì)代碼2.1文件輸入程序functionpushbutton1_Callback(hObject,eventdata,handles)globalxydmsjdjljddmsyoujiaoqsxzbqsyzbhsxzbhsyzbjdxsljlzjdzvifwj...sxsyvxvygzsxgzsyxzbyzbjdbhcjdxc[filename,pathname]=uigetfile('*.xlsx','打開觀測數(shù)據(jù)');str=[pathname,filename];iffilename==0return;elsedata=xlsread(str);dx=size(data);dxx=dx(1);x=data(dxx,1);y=data(dxx,2);set(handles.edit8,'string',num2str(x));set(handles.edit9,'string',num2str(y));qsxzb=data(x+1,1);qsyzb=data(x+1,2);hsxzb=data(x+1,3);hsyzb=data(x+1,4);set(handles.edit1,'string',num2str(qsxzb));set(handles.edit2,'string',num2str(qsyzb));set(handles.edit4,'string',num2str(hsxzb));set(handles.edit3,'string',num2str(hsyzb));ifx==y;zjd=data(x+2,1);zjm=data(x+2,2);zjs=data(x+2,3);ifzjm<10zjm=['0',num2str(zjm)];endifzjs<10zjs=['0',num2str(zjs)];endset(handles.edit5,'string',num2str(zjd));set(handles.edit6,'string',num2str(zjm));set(handles.edit7,'string',num2str(zjs));endd=(data(1:x,1))';m=(data(1:x,2))';s=(data(1:x,3))';jl=(data(1:y,4))';ifd(1)<0d=abs(d);youjiao=1;endforn=1:xjddms(n)=d(n)+m(n)/100+s(n)/10000;jd(n)=d(n)+m(n)/60+s(n)/3600;enda=1:x;space='';ab='第';bc='個觀測值:';maxa=length(num2str(max(d)));maxb=length(num2str(max(m)));maxc=length(num2str(max(s)));minspace=3;forn=1:xLa=length(num2str(d(1,n)));Lb=length(num2str(m(1,n)));Lc=length(num2str(s(1,n)));jds{1,n}=[ab,num2str(a(1,n)),bc,...num2str(d(1,n)),'',repmat(space,1,2*(maxa-La)+minspace)...num2str(m(1,n)),'',repmat(space,1,2*(maxb-Lb)+minspace)...num2str(s(1,n))];endset(handles.listbox2,'string',jds);forn=1:yjls{1,n}=[ab,num2str(a(1,n)),bc,space,num2str(jl(1,n))];endset(handles.listbox4,'string',jls);end%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)functionedit10_Callback(hObject,eventdata,handles)%hObjecthandletoCallbackedit10(seeGCBO)%eventdatareserved-tobedefinedinaCallbackfutureversionofMATLAB%handlesstructurewithhandlesandCallbackuserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsCallbackofedit10astext%str2double(get(hObject,'String'))returnsCallbackcontentsofedit10asadouble%Executesduringobjectcreation,Callbackaftersettingallproperties.2.2計(jì)算程序代碼forn=1:xjdz=jdz+jd(n);endjdbhc=(jdz一(x一2)*180)*3600;vi=-jdbhc/x;forn=1:xjdxsl(n)=vi;endifvi~=fix(vi)v=rem(jdbhc,x);jdbhcc=jdbhc一v;vi=一jdbhcc/x;forn=1:xjdxsl(n)=vi;endut=jd;forn=1:round(abs(v))point=1;form=2:x;ifut(point)<ut(m)point-m;endendr(n)=point;ut(point)=0;endforn=1:round(abs(v))m=r(n);jdxsl(m)=jdxsl(m)一v/abs(v);endendfwj(1)=qsfwj+zj-180;ifyoujiao==1jd(1)=jd(1)+jdxsl(1)/3600;forn=2:xjd(n)=jd(n)+jdxsl(n)/3600;fwj(n)=fwj(n-1)-jd(n)+180;endelsejd(1)=jd(1)+jdxsl(1)/3600;forn=2:xjd(n)=jd(n)+jdxsl(n)/3600;fwj(n)=fwj(n-1)+jd(n)-180;endendforn=1:yfx=fx+sx(n);sy(n)=jl(n)*sin(fwj(n)*pi/180);fy=fy+sy(n);endf=sqrt(fx^2+fy^2);k=ceil((jlz/f));forn=1:yvx(n)=-fx*jl(n)/jlz;gzsx(n)=sx(n)+vx(n);vy(n)=-fy*jl(n)/jlz;gzsy(n)=sy(n)+vy(n);endxzb(1)=qsxzb;yzb(1)=qsyzb;forn=2:y+1xzb(n)=xzb(n-1)+gzsx(n-1)yzb(n)=yzb(n-1)+gzsy(n-1)end2.3文件輸出代碼functionpushbutton2_Callback(hObject,eventdata,handles)globalxyjdjljddmsyoujiaoqsxzbqsyzbhsxzbhsyzbjdxsljlzjdzvifwj...sxsyvxvygzsxgzsyxzbyzb[filenamefilepath]=uiputfile('*.xls','打開數(shù)據(jù)');str=[filepathfilename];ifstr==0return;elsem={'點(diǎn)號','角度(dd.mmss)','角度改正數(shù)(s)','方位角(dd.mmss)','距離(m)','X坐標(biāo)增量(m)','Y坐標(biāo)增量(m)','改正后X坐標(biāo)增量(m)','改正后Y坐標(biāo)增量(m)','X','Y'};xlswrite(str,m,'sheet1','A1');xlswrite(str,sc,'sheet1','B2');ifx>ypoint(1)='0';point(x)='A';forn=2:ypoint(n)=num2str(n-1);endb={'','','','',''};xlswrite(str,b,'sheet1','E2');c=['F',num2str(x+2)];xlswrite(str,ff,'sheet1',c);h=['A',num2str(2)];f=['A',num2str(x+1)];xlswrite(str,point','sheet1','A2');dd=['D',num2str(x+2)];jl={'距離和',jlz};xlswrite(str,jl,'sheet1',dd);ee=['B',num2str(x+2)];jdxc=get(handles.edit23,'string');jdxc=['±',jdxc];jd={'角度閉合差',jdbhc;'限差',jdxc};xlswrite(str,jd,'sheet1',ee);hh=['H',num2str(x+3)];qcbhc=get(handles.edit29,'string');qcbhc=['1/',qcbhc];qcbhc={'導(dǎo)線全長相對閉合差',qcbhc};xlswrite(str,qcbhc,'sheet1',hh);elsepoint(1)='0';point(x+1)='0';forn=2:x;point(n)=num2str(n-1);endd={'',''};e=['B',num2str(y+2)];xlswrite(str,d,'sheet1',e);b={'','','','',''};xlswrite(str,b,'sheet1','E2');c=['F',num2str(x+3)];xlswrite(str,ff,'sheet1',c);f=['A',num2str(x+2)];xlswrite(str,point','sheet1','A2');dd=['D',num2str(x+3)];Jl={'距離和',jlz};xlswrite(str,jl,'sheet1',dd);ee=['B

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論