亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VB調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱在測繪軟件設(shè)計中的應(yīng)用

        2011-11-15 03:30:02王新志丁海勇
        測繪通報 2011年11期
        關(guān)鍵詞:工具箱調(diào)用引擎

        王新志,曹 爽,丁海勇

        (南京信息工程大學(xué)遙感學(xué)院,江蘇南京210044)

        VB調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱在測繪軟件設(shè)計中的應(yīng)用

        王新志,曹 爽,丁海勇

        (南京信息工程大學(xué)遙感學(xué)院,江蘇南京210044)

        運(yùn)用Matlab引擎技術(shù),實(shí)現(xiàn)VB調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行測繪軟件設(shè)計,集成后的軟件能夠充分發(fā)揮兩種語言的優(yōu)勢。并以基于BP神經(jīng)網(wǎng)絡(luò)的GPS高程轉(zhuǎn)換軟件設(shè)計為例,介紹VB調(diào)用Matlab及VB編寫主界面的詳細(xì)步驟。

        VB;Matlab;神經(jīng)網(wǎng)絡(luò)工具箱;測繪軟件

        一、引 言

        自20世紀(jì)80年代末以來,神經(jīng)網(wǎng)絡(luò)這個涉及多種學(xué)科的高新科技領(lǐng)域,吸引了眾多的數(shù)理科學(xué)家、工程師等對其進(jìn)行研究與應(yīng)用。神經(jīng)網(wǎng)絡(luò)在測繪研究的眾多方面都有廣泛的應(yīng)用,如GPS高程轉(zhuǎn)換[1]、遙感圖像分析與處理[2]、路基沉降預(yù)測[3]等。然而,由于神經(jīng)網(wǎng)絡(luò)種類繁多,常用的有BP神經(jīng)網(wǎng)絡(luò),RBF神經(jīng)網(wǎng)絡(luò)、Hopfield神經(jīng)網(wǎng)絡(luò)等,并且神經(jīng)網(wǎng)絡(luò)層數(shù)及每層神經(jīng)元較多,加上輸入矢量的組數(shù)龐大,使得采用一般的程序設(shè)計神經(jīng)網(wǎng)絡(luò)時往往容易出現(xiàn)循環(huán)套循環(huán)的復(fù)雜嵌套程序,從而使得程序設(shè)計既費(fèi)時,又不易調(diào)通,將大量的時間浪費(fèi)在程序編寫與調(diào)試中而無暇顧及如何設(shè)計出具有更好性能的網(wǎng)絡(luò)。

        Matlab是一款強(qiáng)大的工程計算和仿真軟件,它集數(shù)值計算、信號處理和圖形分析等功能于一體,被稱為演算紙式的語言。它強(qiáng)大的功能為各領(lǐng)域的應(yīng)用提供了基礎(chǔ),已經(jīng)從最初的矩陣實(shí)驗(yàn)室滲透到科學(xué)與工程計算的多個領(lǐng)域,如工程計算、數(shù)值分析、信號處理、自動控制等[4]。其中的神經(jīng)網(wǎng)絡(luò)功能提供了大量可直接調(diào)用的函數(shù)和命令,用Matlab來編寫各種網(wǎng)絡(luò)設(shè)計與訓(xùn)練的子程序,可以使神經(jīng)網(wǎng)絡(luò)設(shè)計者從繁瑣的編程中解脫出來,集中精力去思考和解決問題,從而能大大提高效率。然而Matlab也有不足,它的界面編寫功能相對來說簡單、粗糙。

        Visual Basic(VB)是面向?qū)ο蟮目梢暬幊陶Z言,它為用戶提供了可視化的面向?qū)ο笈c事件驅(qū)動的程序設(shè)計集成開發(fā)環(huán)境,使得程序設(shè)計變得極其快捷、方便,用戶無需設(shè)計大量的程序代碼,便可設(shè)計出使用的應(yīng)用系統(tǒng)[5]。VB的圖形界面編程能力強(qiáng)大,菜單、工具條、快捷方式等實(shí)現(xiàn)起來很簡單。如果能將Matlab強(qiáng)大的神經(jīng)網(wǎng)絡(luò)工具箱功能與VB在圖形用戶界面開發(fā)方面的優(yōu)勢結(jié)合起來,實(shí)現(xiàn)VB與Matlab的無縫集成,對于有效縮短神經(jīng)網(wǎng)絡(luò)算法相關(guān)軟件的開發(fā)周期,優(yōu)化軟件系統(tǒng)性能具有十分重要的意義。

        二、Matlab引擎技術(shù)及VB調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱的實(shí)現(xiàn)方法

        1.Matlab引擎技術(shù)

        Matlab引擎函數(shù)庫是Matlab提供的一系列程序的集合,它允許用戶在自己的應(yīng)用程序中對Matlab函數(shù)進(jìn)行調(diào)用,將Matlab作為一個計算引擎使用,讓其在后臺運(yùn)行。當(dāng)用戶使用Matlab引擎時,相當(dāng)于在后臺啟動了一個Matlab進(jìn)程。Matlab引擎函數(shù)在用戶程序與Matlab進(jìn)程之間起一個橋梁的作用,它完成兩者的數(shù)據(jù)交換和命令的傳遞。在Windows環(huán)境中Matlab引擎是通過ActiveX來完成的。而ActiveX是由Microsoft制定的一種獨(dú)立于編程語言的組件集成協(xié)議,它不受開發(fā)環(huán)境的限制,并且ActiveX控件能夠在不同的環(huán)境中使用,包括VC、VB、C++builder等[6]。

        在VB編程環(huán)境下通過ActiveX自動化接口可將 Matlab作為 VB語言的一個 ActiveX部件調(diào)用[7]。

        2.VB調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱的實(shí)現(xiàn)方法

        Matlab ActiveX的功能主要包括在Matlab工作空間執(zhí)行Matlab命令以及直接從工作空間存取矩陣等,Matlab提供了一些可以在Matlab或VB中使用的函數(shù),來實(shí)現(xiàn)相應(yīng)的功能[7]。常用的函數(shù)主要有:

        1)Execute(Command as String):調(diào)用Matlab來執(zhí)行一條Matlab命令,同時返回一個字符串表示命令的執(zhí)行情況。任何能在Matlab中執(zhí)行的命令都可以被包括在Command字符串中。具體格式為

        其中,BSTR表示字符串類型,它與VB存儲字符串所采用的數(shù)據(jù)格式相同。

        2)GetFullMatrix:用來將Matlab的一個矩陣變量傳遞到VB程序的一個一維或二維數(shù)組中。具體格式為

        其中,BSTR表示字符串類型;Name指Matlab中的矩陣名;Workspace指矩陣所在的工作空間,當(dāng)Workspace為base時,表示在Matlab的工作空間操作;pr和pi分別是數(shù)組的實(shí)部和虛部,為雙精度數(shù)據(jù)類型。

        3)PutFullMatrix:用來將VB程序的一個一維或二維數(shù)組傳遞到Matlab的一個矩陣變量中。具體格式為

        其中,參數(shù)含義與GetFullMatrix類似。

        4)MinimizeCommandWindow:用來使Matlab命令窗口最小化。具體格式為

        5)Quit:關(guān)閉Matlab服務(wù)器。

        VB利用Matlab引擎技術(shù)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)工具箱調(diào)用的過程如圖1所示。

        圖1 VB利用Matlab引擎技術(shù)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)工具箱的調(diào)用過程

        三、基于BP神經(jīng)網(wǎng)絡(luò)的GPS高程轉(zhuǎn)換軟件的設(shè)計與應(yīng)用

        Matlab神經(jīng)網(wǎng)絡(luò)工具箱提供了多種神經(jīng)網(wǎng)絡(luò),針對不同的問題,首先要選擇適合的神經(jīng)網(wǎng)絡(luò),根據(jù)樣本數(shù)據(jù)確定神經(jīng)網(wǎng)絡(luò)的輸入向量與輸出向量,并利用樣本數(shù)據(jù)對網(wǎng)絡(luò)進(jìn)行訓(xùn)練;然后通過比較分析,尋找收斂效果較好的隱含層層數(shù)、神經(jīng)元數(shù)及各層激活函數(shù)、訓(xùn)練函數(shù);各參數(shù)確定之后,為了方便使用,一般將其保存起來,一并存入M文件中。

        1.BP神經(jīng)網(wǎng)絡(luò)與Matlab神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)

        BP(back propagation)神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。BP網(wǎng)絡(luò)能學(xué)習(xí)和存貯大量的輸入-輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和達(dá)到最小。

        Matlab神經(jīng)網(wǎng)絡(luò)工具箱是以神經(jīng)網(wǎng)絡(luò)理論為基礎(chǔ),用Matlab語言構(gòu)造出的典型神經(jīng)網(wǎng)絡(luò)工具函數(shù)。Matlab神經(jīng)網(wǎng)絡(luò)工具箱中含有大量與BP神經(jīng)網(wǎng)絡(luò)有關(guān)的函數(shù),這些函數(shù)為BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用研究提供了強(qiáng)有力的工具。本文中用到的與BP神經(jīng)網(wǎng)絡(luò)有關(guān)的工具箱函數(shù)有[8]:

        1)newff():BP神經(jīng)網(wǎng)絡(luò)創(chuàng)建函數(shù),用于建立一個BP神經(jīng)網(wǎng)絡(luò)。

        2)train():神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù),用于訓(xùn)練建立的BP神經(jīng)網(wǎng)絡(luò)。

        3)sim():神經(jīng)網(wǎng)絡(luò)仿真函數(shù),用于對訓(xùn)練后的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真。

        4)tansig()、purelin():神經(jīng)元傳遞函數(shù),又稱激活函數(shù)。tansig為雙曲正切S型(sigmoid)傳遞函數(shù),利用BP算法訓(xùn)練隱層神經(jīng)元時經(jīng)常采用它; purelin()為線性傳遞函數(shù),利用BP算法訓(xùn)練輸出層神經(jīng)元時經(jīng)常采用它。

        5)trainlm():BP網(wǎng)絡(luò)訓(xùn)練函數(shù),該函數(shù)采用L-M優(yōu)化算法。

        2.Matlab中編寫M函數(shù)及優(yōu)化

        神經(jīng)網(wǎng)絡(luò)在Matlab中實(shí)現(xiàn)的步驟如圖2所示。

        圖2 神經(jīng)網(wǎng)絡(luò)在Matlab中實(shí)現(xiàn)的步驟

        在Matlab M-fite Editor中編輯BP神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)過程。主要代碼如下

        其中,Bp_Net為函數(shù)名稱;Bp_Net(R1,R2,R3,R4,R5,R6,R7)括號內(nèi)為輸入?yún)?shù),R1為隱含層神經(jīng)元數(shù),R2為輸出層神經(jīng)元數(shù),R3為訓(xùn)練樣本個數(shù),R4為檢驗(yàn)樣本個數(shù),R5為最大循環(huán)步數(shù),R6為網(wǎng)絡(luò)性能參數(shù),R7為兩次顯示之間的訓(xùn)練步數(shù);[Z,ey,zwch]中括號內(nèi)是輸出參數(shù),Z為轉(zhuǎn)換后GPS高程值,ey為轉(zhuǎn)換后GPS高程誤差值,zwch為轉(zhuǎn)換結(jié)果的中誤差值。主要代碼如下

        為了提高軟件的運(yùn)算速度,需要對設(shè)計的M函數(shù)進(jìn)行一些優(yōu)化。

        1)編寫的M文件名必須與利用function定義的Matlab函數(shù)相同,否則將無法在VB程序?qū)崿F(xiàn)函數(shù)的調(diào)用。

        2)程序中的變量要有明確定義。Matlab的M程序并不要求預(yù)定義變量,Matlab默認(rèn)所有的變量都是矩陣,對這些沒有定義維數(shù)的矩陣編譯起來速度較慢,如果預(yù)定義變量的類型和維數(shù),則可大大加快編譯的速度。

        3)盡量減少循環(huán)的使用。循環(huán)在整個程序中耗時較多,要盡量利用Matlab中函數(shù)和矩陣的操作運(yùn)算優(yōu)勢,以減少循環(huán)的使用。

        3.VB中的程序設(shè)計

        在VB下建立一個新窗口,在其上添加相關(guān)控件,設(shè)計程序運(yùn)行界面如圖3所示。

        圖3 程序運(yùn)行界面

        其中,文本框控件有7個,名稱為Text1、Text2、…、Text7,用來實(shí)現(xiàn)相關(guān)參數(shù)輸入功能;按鈕控件一個,名稱為Command 1,用來實(shí)現(xiàn)執(zhí)行程序代碼的功能;高級文本框控件一個,名稱為RichTextBox1,用來輸出程序的處理結(jié)果。主要代碼如下

        該GPS高程轉(zhuǎn)換系統(tǒng)主要用于廈門集美大橋區(qū)域GPS高程轉(zhuǎn)換,系統(tǒng)界面如圖3所示。主要采用BP神經(jīng)網(wǎng)絡(luò)算法,采用的樣本數(shù)據(jù)共26個點(diǎn),分為兩部分,訓(xùn)練樣本含15個點(diǎn),用于訓(xùn)練BP網(wǎng)絡(luò);檢驗(yàn)樣本11個點(diǎn),用于檢驗(yàn)網(wǎng)絡(luò)的仿真精度。經(jīng)過比較、分析,網(wǎng)絡(luò)具體設(shè)置為輸入層神經(jīng)元數(shù)為2,輸入向量為GPS水準(zhǔn)點(diǎn)的X、Y坐標(biāo);隱含層神經(jīng)元數(shù)為20;輸出層神經(jīng)元數(shù)為1,為GPS高程異常。通過該系統(tǒng),可以方便地實(shí)現(xiàn)該區(qū)域內(nèi)GPS大地高到正常高的快速、高精度轉(zhuǎn)換,同時可避免繁瑣的算法設(shè)計過程。

        四、結(jié)束語

        本文詳細(xì)論述了如何利用Matlab引擎技術(shù)實(shí)現(xiàn)VB調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行測繪軟件設(shè)計,并通過具體例子演示了軟件設(shè)計的詳細(xì)過程。經(jīng)實(shí)例驗(yàn)證,使用VB編寫程序主界面,調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱,能充分發(fā)揮VB編程靈活、界面友好等優(yōu)點(diǎn),同時能高效地利用Matlab強(qiáng)大、豐富的工具箱,降低了開發(fā)工作的復(fù)雜度,使軟件開發(fā)過程更簡單快速。

        [1] WANG Xinzhi,CHEN Wei,SUN Jingling.Application of the RBF Neural Network for GPS Height Fitting in Linear Project[C]∥Proceedings of the 2010 International Conference on Application of Mathematics and Physics.London:World Academic Union,2010.

        [2] 李艷玲.人工神經(jīng)網(wǎng)絡(luò)在遙感圖像分析與處理中的應(yīng)用[J].黑龍江科技信息,2009(23):23.

        [3] 尹珺,邵黎霞,樊琨.帶調(diào)控器人工神經(jīng)網(wǎng)絡(luò)的軟土路基沉降預(yù)測[J].測繪通報,2007(9):17-19.

        [4] 楊志強(qiáng),路曉峰.基于COM的Matlab和C++Builder在測量軟件開發(fā)中的應(yīng)用[J].測繪科學(xué),2007,32(3):184-185.

        [5] 李雁翎.Visual Basic程序設(shè)計[M].北京:清華大學(xué)出版社,2007.

        [6] 黃一丹,嚴(yán)洪森,馮麗娟,等.基于C#.NET與Matlab接口和BP網(wǎng)絡(luò)的汽車產(chǎn)量預(yù)測[J].計算機(jī)技術(shù)與發(fā)展,2008,18(11):36-40.

        [7] 王耀龍,梁小冰,黃萍.Visual Basic.NET調(diào)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱的實(shí)現(xiàn)方法[J].現(xiàn)代計算機(jī),2005,203(1):78-84.

        [8] 飛思科技產(chǎn)品研發(fā)中心.神經(jīng)網(wǎng)絡(luò)理論與Matlab 7實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2005.

        Application of Method of Calling Matlab Neural Network Toolbox in VB to Surveying Software Design

        WANG Xinzhi,CAO Shuang,DING Haiyong

        0494-0911(2011)11-0059-04

        P209

        B

        2010-10-25

        王新志(1981—),男,湖南鄭州人,碩士,助教,主要從事GPS數(shù)據(jù)處理及應(yīng)用方面的研究工作。

        猜你喜歡
        工具箱調(diào)用引擎
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        藍(lán)谷: “涉藍(lán)”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        Matlab曲線擬合工具箱在地基沉降預(yù)測模型中的應(yīng)用
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        基于Cocos2d引擎的PuzzleGame開發(fā)
        搜狗分號工具箱 輸入更便捷
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        小熊的工具箱
        日本添下边视频全过程| 天堂av一区二区在线观看| 久久无码专区国产精品s| 国产av丝袜旗袍无码网站| 亚洲美国产亚洲av| 欧美激情国产一区在线不卡| 亚洲av永久综合网站美女| 国产一区二区三区精品成人爱| 亚洲一区二区三区精品视频| 天天爽夜夜爽夜夜爽精品视频 | 成人不卡国产福利电影在线看| 国产精品反差婊在线观看| 日产精品一区二区免费| 中文字幕乱码人妻在线| 成人av蜜桃在线观看| 麻豆资源在线观看视频| 天天摸天天做天天爽水多| 亚洲国产成人久久综合下载| 看曰本女人大战黑人视频| 欧美亚洲国产精品久久高清 | 国产网友自拍视频在线观看| 色婷婷亚洲精品综合影院| 日本不卡高字幕在线2019| 亚洲第一se情网站| 中文 国产 无码免费| 国产精品美女久久久久浪潮AVⅤ| 亚洲中文字幕不卡一区二区三区 | 一个人午夜观看在线中文字幕| 国产成人精品免费久久久久 | 亚洲AV小说在线观看| 亚洲成人色黄网站久久| 亚洲一区二区三区偷拍厕所| 香蕉免费一区二区三区| 国产成人av片在线观看| 男女超爽视频免费播放| 99精品国产闺蜜国产在线闺蜜| 亚洲无av码一区二区三区| 久久免费看黄a级毛片| 久久久久亚洲av片无码下载蜜桃| 中文 国产 无码免费| 亚洲最大视频一区二区三区|