DZ207VB和MATLAB混合編程技術(shù)研究
DZ207VB和MATLAB混合編程技術(shù)研究,dz207vb,以及,matlab,混合,編程,技術(shù)研究
二 ○ ○ 八 屆 畢 業(yè) 論 文VB 和 MATLAB 混合編程技術(shù)研究學(xué) 院:信息工程學(xué)院專(zhuān) 業(yè):電子信息工程姓 名:郭佳肖學(xué) 號(hào):2403040109指導(dǎo)教師:馮興樂(lè)完成時(shí)間:2008 年 6 月 8 日二〇〇八年六月畢業(yè)論文任務(wù)書(shū)課題名稱(chēng) VB 和 MATLAB 混合編程技術(shù)研究 學(xué)院(部) 信息工程學(xué)院 專(zhuān) 業(yè) 電子信息工程 班 級(jí) 24030401 學(xué)生姓名 郭佳肖 學(xué) 號(hào) 2403040109 3 月 3 日至 6 月 8 日共 14 周指導(dǎo)教師(簽字) 教學(xué)院長(zhǎng)(簽字) 2008 年 1 月 8 日一、設(shè)計(jì)內(nèi)容(論文闡述的問(wèn)題)通過(guò)網(wǎng)絡(luò)及圖書(shū)館等資源檢索,學(xué)習(xí)并掌握 MATLAB 與 VB 編程語(yǔ)言。并能完成 MATLAB 與 VB 的聯(lián)合編程。本課題要求完成:1.整理資料,給出 MATLAB 與 VB 的聯(lián)合編程思路;2.以 VB 控件為輸入輸出接口,以 MATLAB 語(yǔ)言作為內(nèi)部計(jì)算工具;3.實(shí)現(xiàn)簡(jiǎn)單的平臺(tái)設(shè)計(jì),重點(diǎn)掌握兩種語(yǔ)言之間的調(diào)用和接口;5.總結(jié)并撰寫(xiě)畢業(yè)論文。二、設(shè)計(jì)原始資料(實(shí)驗(yàn)、研究方案)研究方案1. 設(shè)計(jì)最基本的 VB 控件,能夠通過(guò)人機(jī)界面輸入?yún)?shù);2. 將 VB 控件與內(nèi)部程序之間建立聯(lián)系,這是本設(shè)計(jì)方案的重點(diǎn);3. 編寫(xiě) MATLAB 程序,實(shí)現(xiàn)簡(jiǎn)單的計(jì)算功能,不作為重點(diǎn);4. 將計(jì)算結(jié)果通過(guò)借口顯示到 VB 界面,包括對(duì)話(huà)框和圖表等。三、設(shè)計(jì)完成后提交的文件和圖表(論文完成后提交的文件)設(shè)計(jì)論文一份;程序代碼一份。四、畢業(yè)設(shè)計(jì)(論文)進(jìn)程安排序號(hào) 畢業(yè)設(shè)計(jì)(論文)各階段名稱(chēng) 日期(教學(xué)周)1 布置畢業(yè)設(shè)計(jì)任務(wù),撰寫(xiě)開(kāi)題報(bào)告 第一周---第二周2 查閱相關(guān)資料,學(xué)習(xí)相關(guān)知識(shí) 第三周---第五周 3 畢業(yè)設(shè)計(jì) 第六周---第九周4 中期檢查 第十周 5 畢業(yè)設(shè)計(jì) 第十一周---第十三周6 撰寫(xiě)并提交畢業(yè)論文 第十四周完五、主要參考資料[ 1 ]王世香. 精通 MATLAB 接口與編程[M].電子工業(yè)出版社,2006 [ 2 ]蘇金朋.劉宏,劉波 . MATLAB 高級(jí)編程[M].電子工業(yè)出版社,2004 [ 3 ]董維國(guó). 深入淺出 MATLAB 7.0 混合編程[M].機(jī)械工業(yè)出版社,2005 [ 4 ]袁福慶.Visual Basic 程序設(shè)計(jì)標(biāo)準(zhǔn)教程[M].上海:科學(xué)普及出版社, 2007 [ 5 ]趙靜.MATLAB 高級(jí)應(yīng)用 [M].清源計(jì)算機(jī)工作室,[ 6 ]楊秀章.COM 技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社, 1999.[ 7 ]蘇金明.MATLAB 與外部程序接口 [M].北京: 電子工業(yè)出版社,2004.[ 8 ]潘愛(ài)民. COM 原理與應(yīng)用. 北京:清華大學(xué)出版社,1999.[ 9 ]劉忠檢,潘獻(xiàn)飛.MATLAB 外部程序接口(6. X)[M] .北京:科學(xué)出版社,2002.[ 10 ]張忠涌.精通 MATLAB7.0 版[M].北京:北京航空航天大學(xué)出版社, 2003.長(zhǎng)安大學(xué)畢業(yè)設(shè)計(jì)開(kāi)題報(bào)告表課題名稱(chēng) VB 和 MATLAB 混合編程技術(shù)研究課題來(lái)源 自選項(xiàng)目 課題類(lèi)型 專(zhuān)題研究 指導(dǎo)教師 馮興樂(lè)學(xué)生姓名 郭佳肖 學(xué) 號(hào)2403040109專(zhuān) 業(yè) 電子信息工程一、課題的意義(1) 、MATLAB 是由美國(guó) The Mathworks 公司開(kāi)發(fā)的目前國(guó)際上最流行的科學(xué)與工程計(jì)算的軟件工具之一,它具有強(qiáng)大的數(shù)值運(yùn)算能力,先進(jìn)的資料視覺(jué)化功能,開(kāi)放及可延伸的架構(gòu),豐富的程序工具箱,在控制系統(tǒng),圖像處理,信號(hào)處理,神經(jīng)網(wǎng)絡(luò)等方面都有廣泛的應(yīng)用。但 MATLAB 的不足之處在于可視化界面功能過(guò)于簡(jiǎn)單,本身是一個(gè)命令行式的交互系統(tǒng),功能模塊分散,要求使用者有較高的計(jì)算機(jī)素質(zhì)。 MATLAB 語(yǔ)言的局限:(a) 、 MATLAB 程序中出現(xiàn)循環(huán)時(shí), MATLAB 運(yùn)行起來(lái)非常吃力,有時(shí)速度變得很慢。(b) 、以前許多用其它語(yǔ)言編寫(xiě)的算法程序如果要移植到 MATLAB 環(huán)境中運(yùn)行,就需要重新編寫(xiě)為M文件,還需要浪費(fèi)許多人力和物力。(c) 、別的編程環(huán)境需要使用 MATLAB 的某些優(yōu)秀的功能時(shí),找不到合適的辦法。(2) 、Visual Basic 是 Microsoft 公司推出的應(yīng)用廣泛的可視化編程工具,簡(jiǎn)單易學(xué)且功能豐富,能夠迅速有效的編制優(yōu)良的可視化界面,同時(shí)避開(kāi)了C++編程中的過(guò)分繁瑣和抽象的特點(diǎn),因而一經(jīng)推出就成為 Windows 平臺(tái)上的主力編程語(yǔ)言之一。VB 的缺點(diǎn)在于運(yùn)算速度慢,不適合進(jìn)行大型的數(shù)值計(jì)算和圖形處理,使其在一些專(zhuān)業(yè)領(lǐng)域方面不能得到充分的利用。 由于兩者各自的特點(diǎn),使用一種方法將他們結(jié)合起來(lái),實(shí)現(xiàn)數(shù)據(jù),圖形和界面的有機(jī)結(jié)合,將給用戶(hù)的開(kāi)發(fā)帶來(lái)極大的方便.二、課題研究的內(nèi)容、方法、手段及預(yù)期成果(1) .基于 ActiveX 技術(shù) 的接口實(shí)現(xiàn)ActiveX 是 Microsoft 提出的一組使用 COM(Component Object Model,部件對(duì)象模型)使得軟件部件在網(wǎng)絡(luò)環(huán)境中進(jìn)行交互的技術(shù)集,它與具體的編程語(yǔ)言無(wú)關(guān)。ActiveX 的特點(diǎn)就是使不同的軟件對(duì)象可以跨進(jìn)程、跨平臺(tái)并能在網(wǎng)絡(luò)上進(jìn)行交互。MatlabActiveX 自動(dòng)化服務(wù)的功能主要包括在 Matlab 工作空間執(zhí)行 Matlab 命令,以及直接從工作空間存取矩陣等 .(2) .基于 DDE 技術(shù)的接口實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)交換(DDE) ,即 Dynamic Data Exchange 的縮寫(xiě)。它是又微軟公司提出的,是基于 WINDOWS 的消息機(jī)制,兩個(gè) WINDOWS 應(yīng)用程序通過(guò)相互之間傳遞消息進(jìn)行“ 對(duì)話(huà) ”,從而完成數(shù)據(jù)的請(qǐng)求、應(yīng)答、傳輸,這兩個(gè)程序分別被稱(chēng)為“Server”和“Client”。Server 是數(shù)據(jù)的提供者,Client 是數(shù)據(jù)的請(qǐng)求和接受者。通過(guò) DDE 方式建立的數(shù)據(jù)連接通道是雙向的, “Client”不但能讀取“Server”中的數(shù)據(jù),還能對(duì)其進(jìn)行修改。(3) .基于 MatrixVB 技術(shù)的接口實(shí)現(xiàn)MatrixVB 是由原 MathTools 公司開(kāi)發(fā)的專(zhuān)門(mén)用于 VB 的一個(gè) COM 組件,該組件提供了 600 多個(gè)函數(shù),包括基本的數(shù)學(xué)運(yùn)算和功能強(qiáng)大的信號(hào)處理、線(xiàn)性代數(shù)、串運(yùn)算及圖形圖像處理功能等,專(zhuān)門(mén)用來(lái)加強(qiáng) VB 的矩陣運(yùn)算與圖形繪制功能。MatrixVB 是與 Matlab 相獨(dú)立的軟件產(chǎn)品,可以脫離 Matlab 運(yùn)行的獨(dú)立的應(yīng)用程序。安裝后,就可以在 VB 中引用它,好處是可以避免重復(fù)性勞動(dòng) ,但執(zhí)行效率較低,實(shí)時(shí)運(yùn)算難以實(shí)現(xiàn)。(4) .基于動(dòng)態(tài)鏈接庫(kù) DLL 方法的接口實(shí)現(xiàn)Matcom 是一個(gè)從 Maltab 到 C 的編譯器,Mathtools 公司利用 Matcom 技術(shù)編寫(xiě)了 Mideva 工具軟件, 可以借用 C 編譯器將 Maltab 下的 M 文件轉(zhuǎn)換為可被VB 調(diào)用的 DLL 文件。操作如下:?jiǎn)?dòng) Mideva,點(diǎn)菜單 FileCompile,選擇要進(jìn)行轉(zhuǎn)換的 M 文件,修改文件名為“myvbfile”,然后進(jìn)行編譯;編譯完成后,將會(huì)產(chǎn)生幾個(gè)文件,VB 調(diào)用要用到的文件有三個(gè):myvbfile.dll(動(dòng)態(tài)鏈接庫(kù)文件)、myvbfile.bas(函數(shù)聲明文件 )、myvbfile.cls(函數(shù)文件),其中把 myvbfile.dll 文件拷貝到 VB 工程目錄或系統(tǒng)目錄 system32 下;在 VB 開(kāi)發(fā)環(huán)境的工程/ 引用標(biāo)簽中選中 Mmatrix,它指向 Mmatrix.dll 文件,這個(gè)文件將在 VB 開(kāi)發(fā)環(huán)境和編譯的DLL 中起到通信代理的作用。(5) .基于 OLE 的接口實(shí)現(xiàn)MATLAB 支持 OLE 自動(dòng)化服務(wù)器兼容。自動(dòng)化是允許一個(gè)應(yīng)用程序或組件控制另一個(gè)應(yīng)用程序或組件的協(xié)議。這樣,MATLAB 可以被任何支持該協(xié)議的 Windows 程序啟動(dòng)和控制,這樣的程序包括 Visual C++、Visual Basic、Access 和 Project 等。使用自動(dòng)化,可以運(yùn)行 MATLAB 命令,并可以從MATLAB 獲得數(shù)組數(shù)據(jù)或把數(shù)組數(shù)據(jù)從 MATLAB 中輸出。(6) .基于 COM 組件技術(shù)的接口實(shí)現(xiàn)COM 是 Component Object Module 的簡(jiǎn)稱(chēng),它是一種通用的對(duì)象接口,支持 COM 的程序稱(chēng)為 COM 組件。Matlat6.5 推出了 combuilder,它可以把 matlab下的程序做成 com 組件,這些組件做為獨(dú)立的 COM 對(duì)象,可以直接被VisualBasic,VisualC 等支持 COM 的語(yǔ)言調(diào)用。 COM 組件的創(chuàng)建步驟如下:(1)輸入命令 comtool,打開(kāi) matlabcombuiler;(2)利用 File 菜單創(chuàng)建一個(gè)工程;(3)載入 M 文件和 MEX 文件,并進(jìn)行編輯;(4)利用 Build 菜單編譯工程,生成 COM 組件。三、階段及時(shí)間安排序號(hào) 設(shè)計(jì)(論文)各階段名稱(chēng) 日期(教學(xué)周)1 布置畢業(yè)設(shè)計(jì)任務(wù),撰寫(xiě)開(kāi)題報(bào)告 第一周---第二周2 查閱相關(guān)資料,學(xué)習(xí)相關(guān)知識(shí) 第三周---第五周 3 畢業(yè)設(shè)計(jì) 第六周---第九周4 中期檢查 第十周 5 畢業(yè)設(shè)計(jì) 第十一周---第十三周6 撰寫(xiě)并提交畢業(yè)論文 第十四周完四、具備的條件因素1.VB 基礎(chǔ)知識(shí)以及相關(guān)書(shū)籍;2.MATLAB 相關(guān)書(shū)籍;3.計(jì)算機(jī)一臺(tái);4.VB 和 MATLAB 軟件;5.老師的悉心指導(dǎo)和個(gè)人的努力。指導(dǎo)教師意見(jiàn)及建議:指導(dǎo)教師簽名: 年 月 日注:1、課題來(lái)源分為:國(guó)家重點(diǎn)、省部級(jí)重點(diǎn)、學(xué)校科研、校外協(xié)作、實(shí)驗(yàn)室建設(shè)和自選項(xiàng)目;課題類(lèi)型分為:工程設(shè)計(jì)、專(zhuān)題研究、文獻(xiàn)綜述、綜合實(shí)驗(yàn)。2、此表由學(xué)生填寫(xiě),交指導(dǎo)教師簽署意見(jiàn)后方可開(kāi)題。VB 和 MATLAB 混合編程技術(shù)研究┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊摘 要充分利用 MATLAB 強(qiáng)大的運(yùn)算及顯示功能和 VB 開(kāi)發(fā)界面友好的特點(diǎn),將二者有機(jī)結(jié)合,可以開(kāi)發(fā)出復(fù)雜的、界面友好的人機(jī)交互處理軟件。重點(diǎn)介紹了應(yīng)用 VB和 MATLAB 進(jìn)行混合編程的幾種技術(shù),熟練掌握這些技術(shù),將使編程工作變得輕松自如。VB 和 MATLAB 的混合編程方法,通過(guò)建立 VB 和 MATLAB 間的 ActiveX 連接,實(shí)現(xiàn) VB 應(yīng)用程序中調(diào)用 MATLAB,建立與 MATLAB ActiveX 服務(wù)器的連接。該方法通過(guò)利用 ActiveX 技術(shù)、應(yīng)用 DDE 與 MATLAB 通訊、使用 Matrix VB、生成執(zhí)行文件、編譯動(dòng)態(tài)鏈接庫(kù)等步驟實(shí)現(xiàn)。其 MATLAB 軟件提供 M 函數(shù)編譯為 COM 組件工具,使用該工具可方便制作出相關(guān) COM 組件,以供其他支持COM 的編程語(yǔ)言調(diào)用,實(shí)現(xiàn) MATLAB 和其它編程語(yǔ)言的整合。關(guān)鍵詞:VB, MATLAB,混合編程, ActiveX 技術(shù), DLLVB 和 MATLAB 混合編程技術(shù)研究┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊ABSTRACTFully using the MATLAB formidable operation and the demonstration function and the VB development contact surface friendly characteristic, the two organic synthesis, may develop complex, the contact surface friendly man-machine interaction processing software. Introduced with emphasis carries on the mix programming using VB and MATLAB several kind of technologies, masters these technologies skilled, will cause the programming work will become relaxed freely. VB and the MATLAB mix programming method, through establishes VB and the MATLAB ActiveX connection, realizes in the VB application procedure to transfer MATLAB, the establishment and MATLAB the ActiveX server's connection. This method through using the ActiveX technology, using DDE and the MATLAB communication, uses Matrix VB, the production execution document, steps and so on translation dynamic link storehouse to realize. Its MATLAB software provides the M function translation is the COM module tool, uses this tool to be possible to facilitate manufactures is related the COM module, supplies other to support COM the programming language to transfer, realizes MATLAB and other programming language conformity. KEYWORDS: VB, MATLAB, hybrid programming, ActiveX technique, DLLVB 和 MATLAB 混合編程技術(shù)研究┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊目 錄前 言 .................................................................................................................................- 1 -第一章 VISUAL BASIC 語(yǔ)言概述 ..............................................................................- 3 -1.1 VISUAL BASIC 語(yǔ)言的發(fā)展 .......................................................................................- 3 -1.2 VISUAL BASIC 語(yǔ)言的基本特點(diǎn) ..............................................................................- 3 -1.3 VISUAL BASIC 語(yǔ)言的應(yīng)用實(shí)例 ...............................................................................- 5 -1.4 總結(jié) VISUAL BASIC 語(yǔ)言的優(yōu)缺點(diǎn) ........................................................................- 9 -第二章 MATLAB 的概述 .............................................................................................- 10 -2.1 MATLAB 的簡(jiǎn)介...................................................................................................- 10 -2.2 MATLAB 的主要功能...........................................................................................- 10 -2.3 MATLAB 的特點(diǎn)...................................................................................................- 11 -2.4 MATLAB 的程序演示...........................................................................................- 12 -2.5 MATLAB 的優(yōu)缺點(diǎn)...............................................................................................- 15 -第三章 VB 和 MATLAB 混合編程技術(shù)方法簡(jiǎn)介 .....................................................- 17 -3.1 VB 和 MATLAB 接口實(shí)現(xiàn)方法介紹 ...................................................................- 17 -3.1.1 基于 ActiveX 技術(shù)的接口實(shí)現(xiàn) ......................................................................- 17 -3.1.2 基于 DDE 技術(shù)的接口實(shí)現(xiàn) ...........................................................................- 18 -3.1.3 基于 MatrixVB 技術(shù)的接口實(shí)現(xiàn) ...................................................................- 18 -3.1.4 基于動(dòng)態(tài)鏈接庫(kù) DLL 方法的接口實(shí)現(xiàn) ........................................................- 18 -3.1.5 基于 COM 組件技術(shù)的接口實(shí)現(xiàn) ..................................................................- 19 -3.2 結(jié)論 ........................................................................................................................- 19 -第四章 基于 OLE、COM 組件實(shí)現(xiàn)接口技術(shù) ...........................................................- 20 -4.1 基于 OLE 的接口實(shí)現(xiàn) ..........................................................................................- 20 -4.1.1 OLE 方法簡(jiǎn)介 ................................................................................................- 20 -4.1.2 OLE 方法舉例 ................................................................................................- 21 -4.2 基于 COM 組件接口實(shí)現(xiàn) ....................................................................................- 25 -4.2.1 COM 基礎(chǔ)知識(shí) ...............................................................................................- 26 -4.2.2 MATLAB COM Builder 基礎(chǔ)知識(shí) ................................................................- 28 -4.2.3 基于 COM 組件實(shí)現(xiàn)接口技術(shù)舉例 ..............................................................- 32 -結(jié) 束 語(yǔ) .........................................................................................................................- 35 -致 謝 ...............................................................................................................................- 36 -參 考 資 料 ...................................................................................................................- 37 -VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 1 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊前 言MATLAB 是美國(guó) MathWorks 公司研制開(kāi)發(fā)的軟件產(chǎn)品,他是當(dāng)今世界上使用最為廣泛的科學(xué)計(jì)算軟件之一。MATLAB 具有強(qiáng)大、豐富的內(nèi)置函數(shù),以及高度靈活的可編程性,所以特別適合數(shù)據(jù)處理以及結(jié)果的圖形化顯示。另外,MATLAB 包含多種根據(jù)應(yīng)用領(lǐng)域劃分的工具箱,這些工具箱及大地?cái)U(kuò)展了 MATLAB 在這些領(lǐng)域的使用功能,其中應(yīng)用最為廣泛的工具箱包括數(shù)字信息處理、圖像處理等?,F(xiàn)在,無(wú)論是在學(xué)術(shù)界還是在工業(yè)界,MATLAB 逐漸成為大多數(shù)科研人員的首選計(jì)算語(yǔ)言,而 MATLAB 本身也逐漸成為一種工業(yè)界通用的計(jì)算語(yǔ)言。一些工業(yè)產(chǎn)品的研究與開(kāi)發(fā)已開(kāi)始完全使用 MATLAB,比如日本豐田汽車(chē)公司的引擎控制單元(ECU)系統(tǒng)的研發(fā)等。在MathWorks 公司的網(wǎng)站上可以看到更多關(guān)于 MATLAB 的工業(yè)應(yīng)用實(shí)例。盡管 MATLAB 在科學(xué)研究以及工業(yè)技術(shù)開(kāi)發(fā)方面有著極為廣泛的應(yīng)用,但這并不意味著在解決實(shí)際問(wèn)題時(shí),MATLAB 總是無(wú)往不利。事實(shí)上,在某些情況下,完全使用 MATLAB 作為開(kāi)發(fā)工具雖然能夠完成任務(wù),但它并不是最佳手段。這里“最佳”的意義包括高效的程序開(kāi)發(fā)過(guò)程、高效的程序執(zhí)行速度,以及簡(jiǎn)單易行的程序部署方法等。幸運(yùn)的是,MATLAB 提供了靈活而有強(qiáng)大的接口技術(shù),使用者可以在 MATLAB 程序里調(diào)用其他語(yǔ)言編寫(xiě)的功能,比如可以把一些繁重的計(jì)算模塊以 C/C++或 FORTRAN編寫(xiě),然后利用 MEX 接口在 MATLAB 中調(diào)用這些模塊,從而提高整個(gè)程序的執(zhí)行效率。另外也可以利用其他語(yǔ)言如 C/C++和操作系統(tǒng)的密切聯(lián)系,使得 MATLAB 能夠調(diào)用操作系統(tǒng)提供的一些功能活著實(shí)現(xiàn)與硬件系統(tǒng)之間的通信,從而擴(kuò)展 MATLAB 程序的功能。MATLAB 的另外一種接口則是如何在其它編程語(yǔ)言中調(diào)用 MATLAB 的數(shù)值計(jì)算和圖形功能,從而加強(qiáng)應(yīng)用程序的功能。這種應(yīng)用在工業(yè)界的使用比較廣泛。MATLAB提供 C/C++編譯器,可以方便地把 M 方程編譯連接成可以在其他編程語(yǔ)言或者應(yīng)用程序中使用的庫(kù)函數(shù)。Visual Basic 是由微軟公司開(kāi)發(fā)的可視化編程語(yǔ)言之一,由于它簡(jiǎn)單易學(xué)的特點(diǎn),只要稍有編程基礎(chǔ)就可以很快掌握,可視化的用戶(hù)界面設(shè)計(jì)功能,把程序設(shè)計(jì)人員從繁瑣復(fù)雜的界面設(shè)計(jì)中解脫出來(lái)。因而很快就風(fēng)靡全球,是一種十分強(qiáng)大和有生命力 Windows 編程語(yǔ)言。但是我們知道 VB 語(yǔ)言也有它的缺點(diǎn),即對(duì)于數(shù)值計(jì)算方面其能力欠佳。所以本論文主要介紹 MATLAB 和 Visual Basic 的混合編程技術(shù)研究,MATLAB 與 Visual Basic 接口,有使用一般動(dòng)態(tài)鏈接庫(kù)、DDE、OLE、ActiveX 和 COM組件等多種方法。我將在本論文中講解 MATLAB 接口的相關(guān)知識(shí),實(shí)現(xiàn) MATLAB 和Visual Basic 的混合編程,結(jié)合實(shí)例給大家一個(gè)直觀(guān)和清晰地思路。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 2 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊總之,MATLAB 的接口技術(shù)可以讓使用者不只局限于一種計(jì)算工具,這些接口技術(shù)使得人們可以更好的利用手中的工具,結(jié)合多個(gè)工具的長(zhǎng)處,更好的解決問(wèn)題。如果使用者能夠靈活、正確地使用各種接口技術(shù),將會(huì)有助于他們找到針對(duì)實(shí)際問(wèn)題的優(yōu)秀的解決方案。在結(jié)構(gòu)方面,本論文基本上分為三個(gè)部分,第一部分提出問(wèn)題,為什么要研究VB 和 MATLAB 混合編程,并分別用兩個(gè)例子實(shí)現(xiàn)功能進(jìn)而比較兩個(gè)語(yǔ)言的優(yōu)缺點(diǎn);第二部分介紹 VB 和 MATLAB 混合編程技術(shù)的方法;第三部分 VB 和 MATLAB 混合編程技術(shù)的實(shí)現(xiàn),在這一章中我主要介紹了基于 OLE 的接口實(shí)現(xiàn)和 COM 組件的實(shí)現(xiàn),并通過(guò)具體的示例演示給大家,簡(jiǎn)潔直觀(guān)。在每個(gè)章節(jié)的安排上,將首先講述基礎(chǔ)知識(shí),以及使用中需要注意的事項(xiàng)。相信將能夠滿(mǎn)足讀者的需求。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 3 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊第一章 Visual Basic 語(yǔ)言概述首先我將分別介紹 Visual Basic 和 MATLAB 的相關(guān)知識(shí),利用具體的操作體現(xiàn)兩個(gè)軟件的各自?xún)?yōu)勢(shì),為 MATLAB 和 Visual Basic 混合編程的技術(shù)研究做下直觀(guān)的鋪墊。利用彼此的優(yōu)勢(shì),避開(kāi)缺點(diǎn)把兩個(gè)軟件很好的結(jié)合起來(lái)。1.1 Visual Basic語(yǔ)言的發(fā)展Basic 是 Beginners All-Purpose Symbolic Instruction Code(初學(xué)者通用符號(hào)指令代碼)的縮寫(xiě),在高級(jí)語(yǔ)言中占有重要地位,是專(zhuān)門(mén)為初學(xué)者設(shè)計(jì)的計(jì)算機(jī)語(yǔ)言。第一代 Basic 于 1964 年在 Dartmouth 學(xué)院由 John Kemeny 和 Thomas 設(shè)計(jì),由于它的語(yǔ)法很接近人類(lèi)所使用的自然語(yǔ)言和數(shù)學(xué)表達(dá)式,只有十幾條語(yǔ)句,簡(jiǎn)單易用,因而受到廣大計(jì)算機(jī)初學(xué)者的喜愛(ài),很快就得到廣泛的應(yīng)用;第二代 Basic 是在 20 世紀(jì) 70 年代中期到 80 年代中期出現(xiàn)的,其功能有了較大的擴(kuò)充,應(yīng)用范圍更加廣泛,主要有 GW-Basic 和 Microsoft 公司的 Basic(MS-Basic) ;第三代 Basic 是在 80 年代中期出現(xiàn)的結(jié)構(gòu)化的 True Basic、Quick Basic、Turbo Basic 和 QBasic;第四代就是 Visual Basic。Visual Basic(簡(jiǎn)稱(chēng)為 VB)是美國(guó) Microsoft 公司推出的、專(zhuān)門(mén)針對(duì) 32 位Windows 操作系統(tǒng)的程序設(shè)計(jì)語(yǔ)言,它從 Basic 發(fā)展到 Visual Basic,經(jīng)歷了二十多年的歷程。Visual 指的是開(kāi)發(fā)圖形用戶(hù)界面(GUI)的方法, Visual Basic 在原有Basic 語(yǔ)言的基礎(chǔ)上進(jìn)一步發(fā)展,至今包含了數(shù)百條語(yǔ)句、函數(shù)和關(guān)鍵詞,其中很多都和 Windows GUI 有直接關(guān)系。專(zhuān)業(yè)人員可以用 Visual Basic 實(shí)現(xiàn)其他任何Windows 編程語(yǔ)言的功能,而初學(xué)者只要掌握幾個(gè)關(guān)鍵詞,就可以建立實(shí)用的應(yīng)用程序。Visual Basic 1.0 版是 1991 年 Microsoft 公司推出的基于窗口的可視化開(kāi)發(fā)工具,當(dāng)時(shí)它的功能相對(duì)較少,也有一定的缺陷。但 Microsoft 公司憑借其強(qiáng)大的技術(shù)優(yōu)勢(shì),經(jīng)過(guò)不斷的努力,于 1993 年推出 Visual Basic 3.0,這個(gè)版本已初具規(guī)模,并進(jìn)入了實(shí)用階段,利用它可以快速創(chuàng)建圖形用戶(hù)界面和多媒體等應(yīng)用程序。1995 年推出的 Visual Basic 4.0 提供了強(qiáng)大的數(shù)據(jù)庫(kù)管理功能,使之成為管理信息系統(tǒng)(MIS, Management Information System)的重要開(kāi)發(fā)工具。而在 1998 年推出的 Visual Basic 6.0,則在開(kāi)發(fā)環(huán)境和功能上都做了很大的完善、擴(kuò)充和增強(qiáng)。實(shí)踐證明,Visual Basic 以其簡(jiǎn)單易學(xué)、功能強(qiáng)大和面向?qū)ο缶幊痰膬?yōu)勢(shì),已經(jīng)發(fā)展為快速應(yīng)用程序開(kāi)發(fā)(RAD, Rapid Application Development)工具的代表,受到廣大專(zhuān)業(yè)程序設(shè)計(jì)者和計(jì)算機(jī)愛(ài)好者的普遍歡迎。1.2 Visual Basic 語(yǔ)言的基本特點(diǎn)在可視化編程上,Visual Basic 已成為新一代程序設(shè)計(jì)語(yǔ)言的杰出代表。與VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 4 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊傳統(tǒng)的語(yǔ)言相比,Visual Basic 在許多方面都有了重要的改革和突破,下面僅介紹最基本的特點(diǎn)。(1) 提供了好學(xué)易用的應(yīng)用程序集成開(kāi)發(fā)環(huán)境Visual Basic 的集成開(kāi)發(fā)環(huán)境是在 Windows 平臺(tái)上實(shí)現(xiàn)的。在這個(gè)環(huán)境中,開(kāi)發(fā)人員可以進(jìn)行界面設(shè)計(jì)、代碼編寫(xiě)和程序調(diào)試,直至可以把應(yīng)用程序編譯成可執(zhí)行程序,在脫離 Visual Basic 的設(shè)計(jì)環(huán)境下直接運(yùn)行。這個(gè)開(kāi)發(fā)環(huán)境支持整個(gè)面向?qū)ο箝_(kāi)發(fā)的全過(guò)程,具有極大的方便性和高效性。(2) 面向?qū)ο蟮目梢暬O(shè)計(jì)工具在 VB 開(kāi)發(fā)環(huán)境中,應(yīng)用了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,即把程序和數(shù)據(jù)封裝起來(lái),視為一個(gè)對(duì)象工具。每個(gè)對(duì)象都是可視的,程序員在設(shè)計(jì)時(shí),只需要根據(jù)設(shè)計(jì)界面的要求,利用現(xiàn)有的對(duì)象工具,直接在屏幕上設(shè)置不同的對(duì)象(如窗口、菜單、按鈕或滾動(dòng)條等) ,并為每個(gè)對(duì)象設(shè)置屬性即可,而不需要編寫(xiě)大量的代碼去描述界面元素的外觀(guān)和位置(這也就是所說(shuō)的“所見(jiàn)即所得” ) 。通過(guò)對(duì)這些對(duì)象進(jìn)行屬性的設(shè)置和調(diào)整,就能改變對(duì)象的外觀(guān)及動(dòng)作的方式,這樣用戶(hù)可以方便地設(shè)計(jì)出美觀(guān)、友好的界面,從而簡(jiǎn)化了界面設(shè)計(jì)的方法,大大提高了編程效率。(3) 事件驅(qū)動(dòng)的編程機(jī)制在設(shè)計(jì)好了用戶(hù)界面后,就可以編寫(xiě)相應(yīng)的程序了。事件驅(qū)動(dòng)是增強(qiáng)程序圖形界面交互性的主要方法,是指利用用戶(hù)的動(dòng)作或行為控制程序運(yùn)行的流向。用戶(hù)的每一個(gè)動(dòng)作或操作行為都可產(chǎn)生一個(gè)事件(如用戶(hù)的鍵盤(pán)或鼠標(biāo)操作、系統(tǒng)消息、程序觸發(fā)等) ,每個(gè)事件都可驅(qū)動(dòng)一段程序的運(yùn)行,程序員只需編寫(xiě)響應(yīng)用戶(hù)動(dòng)作的代碼即可。這樣編寫(xiě)的程序代碼短、易編寫(xiě)、易維護(hù)、且對(duì)象之間的動(dòng)作順序可由程序的使用者靈活控制。(4) 結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言傳統(tǒng)編程方法是面向過(guò)程的機(jī)制,程序是按事先設(shè)計(jì)的程序流程來(lái)運(yùn)行。程序間要求有嚴(yán)謹(jǐn)?shù)倪壿嬯P(guān)系,且程序長(zhǎng)、難編寫(xiě)、難維護(hù)。而 VB 系統(tǒng)提供了豐富的數(shù)據(jù)類(lèi)型、眾多的內(nèi)部函數(shù)、子程序、時(shí)間子程序和自定義函數(shù)等模塊,各個(gè)子程序模塊之間彼此獨(dú)立,也可以相互聯(lián)系,從而形成了結(jié)構(gòu)化程序,簡(jiǎn)單易學(xué)。(5) 支持多種數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)系統(tǒng)Visual Basic 可以利用數(shù)據(jù)控制或通過(guò) ODBC 訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),獲得后臺(tái)的數(shù)據(jù)源支持,從而使 Visual Basic 前臺(tái)的界面與數(shù)據(jù)處理功能結(jié)合起來(lái),擴(kuò)大Visual Basic 的應(yīng)用范圍。Visual Basic 可以訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)主要有Access、 dBASE、 FoxBASE、 Paradox 等,也可以訪(fǎng)問(wèn) Microsoft VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 5 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊Excel、Lotus 1-2-3 等多種電子表格。 Visual Basic 還可以利用對(duì)象的連接與嵌入技術(shù)(OLE) ,開(kāi)發(fā)出具有圖、文、聲、像、 Web 等對(duì)象合成的應(yīng)用程序,并可以方便地使用標(biāo)準(zhǔn)的 Active 部件,調(diào)用標(biāo)準(zhǔn)的接口,用于 Web 或其他支持這一技術(shù)的程序中。Visual Basic 采用了部件編程的思想,在 Visual Basic 中創(chuàng)建的部件可以自用,也可以在其他開(kāi)發(fā)環(huán)境(如 VC++)中使用,還可以引用其他開(kāi)發(fā)工具建立的部件。由于具有接口繼承性,所以通過(guò)部件編程,可以在Visual Basic 中實(shí)現(xiàn)代碼重用。在數(shù)據(jù)庫(kù)應(yīng)用方面,增加了 ADO 功能,Visual Basic 不僅可以支持本地?cái)?shù)據(jù)庫(kù),而且可以連接遠(yuǎn)程數(shù)據(jù)服務(wù)器,大大增強(qiáng)了數(shù)據(jù)處理能力;在 Internet 應(yīng)用方面, Visual Basic 可以通過(guò)文檔或程序訪(fǎng)問(wèn)Internet,創(chuàng)建 Internet 服務(wù)器應(yīng)用程序,支持 DHTML(動(dòng)態(tài) HTML 技術(shù))和Web 程序發(fā)布等。(6) OLE 和 Active 技術(shù)的應(yīng)用OLE(Object Link & Embed)技術(shù)是指對(duì)象的鏈接與嵌入技術(shù),能夠用于開(kāi)發(fā)集聲音、圖像、動(dòng)畫(huà)、字處理和 Web 對(duì)象等于一體的應(yīng)用程序等。Active 技術(shù)可以使開(kāi)發(fā)人員擺脫特定語(yǔ)言的束縛,方便地使用標(biāo)準(zhǔn)的Active 部件,調(diào)用標(biāo)準(zhǔn)的接口,實(shí)現(xiàn)特定的功能。OLE 技術(shù)是 VB 的核心,Active 是 OLE 的發(fā)展。(7) 增強(qiáng)的網(wǎng)絡(luò)功能Visual Basic 最重要的新特性之一,是提供了 DHTML(Dynamic HTML)設(shè)計(jì)工具。這種技術(shù)可以使 Web 頁(yè)面設(shè)計(jì)者動(dòng)態(tài)地創(chuàng)建和編輯界面,使用戶(hù)能夠在VB 中開(kāi)發(fā)出多功能的網(wǎng)絡(luò)應(yīng)用技術(shù)。(8)多個(gè)應(yīng)用程序向?qū)B 的應(yīng)用程序向?qū)Э梢宰詣?dòng)創(chuàng)建不同類(lèi)型、不同功能的應(yīng)用程序,其中包括應(yīng)用程序向?qū)А惭b向?qū)?、?shù)據(jù)對(duì)象向數(shù)據(jù)窗體向?qū)?、IIS 應(yīng)用程序和DHTML 等。(9)完備的聯(lián)機(jī)幫助系統(tǒng)與 Window 環(huán)境下的軟件一樣,在 VB 中隨時(shí)可以利用菜單或 [f1]功能鍵得到所需要的幫助信息。幫助窗口的信息和示例代碼可以進(jìn)行復(fù)制、粘貼、為用戶(hù)學(xué)習(xí)和使用 VB 提供了捷徑。1.3 Visual Basic語(yǔ)言的應(yīng)用實(shí)例一般來(lái)說(shuō),在 Visual Basic 中,按照下列步驟操作即可輕松地編輯出一個(gè)簡(jiǎn)單的 Visual Basic 程序:(1) 利用工具箱中的工具創(chuàng)建面向使用者的輸入輸出界面。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 6 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊(2) 設(shè)計(jì)控件屬性值。(3) 編寫(xiě)代碼。下面以一個(gè)簡(jiǎn)單的范例,說(shuō)明上面三個(gè)步驟的操作方法。進(jìn)入 Visual Basic集成開(kāi)發(fā)環(huán)境要?jiǎng)?chuàng)建 VB 應(yīng)用程序,首先要進(jìn)入 Visual Basic 6.0 的集成開(kāi)發(fā)環(huán)境,具體操作步驟如下:(1)單擊“開(kāi)始”|“所有程序”|“Microsoft Visual Basic 6.0 中文版”|“Microsoft Visual Basic 6.0 中文版”命令,將彈出“新建工程”對(duì)話(huà)框,如圖所示.圖 1.1 “新建工程”對(duì)話(huà)框(2)雙擊“標(biāo)準(zhǔn) EXE”圖標(biāo),新建一個(gè)標(biāo)準(zhǔn)文件工程,將彈出如圖 1.2 所示的Visual Basic 的 IDE 集成開(kāi)發(fā)環(huán)境。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 7 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊、圖 1.2 VB 6.0 的集成開(kāi)發(fā)環(huán)境(3)添加控件 Lable1、Lable2、Text1、Command1、Command2圖 1.3 Form 窗體(4) 在屬性窗口設(shè)定各控件的屬性如表 1.1:表 1.1 控件屬性表VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 8 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊圖 1.4 更改屬性完成(5) 編輯代碼,要進(jìn)入代碼窗口,可以使用以下四種方法中的一種:● 單擊“視圖”|“代碼窗口”命令。控件名稱(chēng) 控件類(lèi)型 屬性 屬性?xún)?nèi)容設(shè)定Name(名稱(chēng)) FormForm1 窗體Caption(標(biāo)題) 歡迎問(wèn)候程序Caption(標(biāo)題) 姓名:Lable1 標(biāo)簽Font/字體大小 12Caption(標(biāo)題) 空白Lable2 標(biāo)簽Font/字體大小 12Text(文字) 空白Text1 文本框Font/字體大小 12Caption(標(biāo)題) 執(zhí)行Command1 命令按鈕Font/字體大小 18Caption(標(biāo)題) 結(jié)束Command2 命令按鈕Font/字體大小 18VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 9 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊● 在控件上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“查看代碼”選項(xiàng)。● 直接在控件上雙擊鼠標(biāo)右鍵。● 在工程資源管理器中單擊 按鈕。執(zhí)行以上任意一種操作,都將打開(kāi)如圖 1.5 所示的代碼窗口,并輸入代碼。圖 1.5 代碼編輯框(6) 當(dāng)代碼編譯完畢后,最好先將文件保存,然后再執(zhí)行程序,下面將上面編輯好的“歡迎問(wèn)候程序”程序先保存再執(zhí)行一次,按 F5 鍵執(zhí)行。執(zhí)行結(jié)果如圖 1.6 所示:VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 10 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊圖 1.6 執(zhí)行結(jié)果顯示1.4 總結(jié) Visual Basic 語(yǔ)言的優(yōu)缺點(diǎn)由上面的例子可以看出 Visual Basic 的優(yōu)點(diǎn)就是簡(jiǎn)單易學(xué)且功能豐富,能夠迅速有效的編制優(yōu)良的可視化界面,同時(shí)避開(kāi)了 C++編程中的過(guò)分繁瑣和抽象的特點(diǎn),因而一經(jīng)推出就成為 Windows 平臺(tái)上的主力編程語(yǔ)言之一。 VB 的缺點(diǎn)在于運(yùn)算速度慢,不適合進(jìn)行大型的數(shù)值計(jì)算和圖形處理,使其在一些專(zhuān)業(yè)領(lǐng)域方面不能得到充分的利用。 為了增強(qiáng) Visual Basic 的運(yùn)算能力,我們要研究 MATLAB 和 Visual Basic 的混合編程,揚(yáng)長(zhǎng)避短,把兩個(gè)軟件有效地結(jié)合起來(lái)。下面我們來(lái)認(rèn)識(shí)一下 MATLAB7.0.1,了解一下 MATLAB 的優(yōu)缺點(diǎn),從而比較兩個(gè)軟件,更好的把兩個(gè)軟件運(yùn)用起來(lái)。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 11 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊第二章 MATLAB 的概述2.1 MATLAB的簡(jiǎn)介實(shí)踐的需要推動(dòng)了科技的發(fā)展,從而促使了社會(huì)的進(jìn)步。由于與數(shù)學(xué)經(jīng)常打交道的科學(xué)家、工程技術(shù)人員在實(shí)際工作中大量數(shù)學(xué)計(jì)算的需要,便促使了具有數(shù)值計(jì)算強(qiáng)大功能和卓越的數(shù)據(jù)可視化能力的計(jì)算機(jī)高級(jí)語(yǔ)言 MATLAB的出現(xiàn)。MATLAB 是在 20 世紀(jì) 80 年代初期,由美國(guó)的 MathWorks 軟件開(kāi)發(fā)公司正式推出的一種數(shù)學(xué)工具軟件。MATLAB 軟件以矩陣運(yùn)算為基礎(chǔ),把計(jì)算、可視化、程序設(shè)計(jì)有機(jī)地融合到了一個(gè)簡(jiǎn)單易學(xué)的交互式工作環(huán)境中,其出色的數(shù)值計(jì)算能力和強(qiáng)大的圖形處理功能得到了廣大科研人員和工程技術(shù)人員的垂青。MATLAB 擁有功能全面的函數(shù)庫(kù),它把大量的函數(shù)封裝起來(lái),讓用戶(hù)脫離了繁瑣復(fù)雜的程序設(shè)計(jì)過(guò)程,只需要將精力集中到模型建立的工作上即可,大大提高了工作效率。MATLAB 系統(tǒng)由 MATLAB 內(nèi)核和其輔助工具箱組成。MATLAB 內(nèi)核是由大量的內(nèi)部函數(shù)及用戶(hù)自定義的函數(shù)構(gòu)成。通過(guò)對(duì)這些函數(shù)的調(diào)用,可以簡(jiǎn)便地處理具體的技術(shù)問(wèn)題。利用 MATLAB 可以實(shí)現(xiàn)科學(xué)計(jì)算、符號(hào)運(yùn)算、算法研究、數(shù)學(xué)建模和仿真、數(shù)據(jù)分析和可視化、科學(xué)工程繪圖以及圖形用戶(hù)界面設(shè)計(jì)等強(qiáng)大功能。MATLAB 經(jīng)過(guò)這些年的不斷更新,交互性越來(lái)越好,功能也變得越來(lái)越強(qiáng)大?,F(xiàn)在,MATLAB 軟件已經(jīng)成為了國(guó)際上應(yīng)用最廣泛的、公認(rèn)的最優(yōu)秀的數(shù)學(xué)應(yīng)用軟件之一。MATLAB 為用戶(hù)提供了豐富而實(shí)用的資源,它涵蓋了許多門(mén)類(lèi)的科學(xué)研究,如數(shù)學(xué)、控制、通信、數(shù)字信號(hào)處理、數(shù)字圖像處理、經(jīng)濟(jì)和地理等。這極大地方便了社會(huì)上各個(gè)行業(yè)的科技工作者。在國(guó)外的大學(xué)中,MATLAB 是學(xué)生必須要掌握的一種基本技能。近年來(lái),它已經(jīng)由最初在科研單位和高等院校中的仿真研究,逐漸普及到了具體工業(yè)部門(mén)中被用來(lái)解決實(shí)際具體問(wèn)題。在國(guó)內(nèi)最近幾年也正由于 MATLAB 本身的巨大優(yōu)勢(shì)而興起了學(xué)習(xí)MATLAB、應(yīng)用 MATLAB 的高潮。2.2 MATLAB的主要功能MATLAB 中的核心是一個(gè)基于矩陣運(yùn)算的快速解釋程序。它以交互式操作接收用戶(hù)輸入的各種指令,輸出計(jì)算結(jié)果。它提供了一個(gè)開(kāi)放式的集成環(huán)境,用戶(hù)可以運(yùn)行系統(tǒng)所提供的各種命令,來(lái)實(shí)現(xiàn)自己所要達(dá)到的目標(biāo)操作。具體地說(shuō)來(lái),MATLAB 的主要功能有:強(qiáng)大的數(shù)值運(yùn)算功能;數(shù)據(jù)可視化功能;動(dòng)態(tài)系統(tǒng)仿真;數(shù)據(jù)處理;數(shù)學(xué)計(jì)算;數(shù)字信號(hào)處理及與外部應(yīng)用程序(C 和Fortran)進(jìn)行動(dòng)態(tài)鏈接等。MATLAB 在數(shù)值運(yùn)算上有其獨(dú)到之處,不僅如此,它還提供了非常豐富的VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 12 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊圖形處理功能,對(duì)數(shù)值計(jì)算的結(jié)果進(jìn)行圖形化處理,進(jìn)一步方便了用戶(hù)操作,深化了用戶(hù)的數(shù)值處理,而且,MATLAB 還提供了句柄這一功能非常強(qiáng)大的面向?qū)ο蟮膱D形系統(tǒng)概念,實(shí)現(xiàn)了對(duì)圖形更深層次的操作。更重要的是,MATLAB 提供了圖形用戶(hù)界面(GUI)設(shè)計(jì)功能,用戶(hù)可以自行設(shè)計(jì)別具風(fēng)格的人機(jī)交互界面。此外,MATLAB 提供了與 C 語(yǔ)言或 Fortran 語(yǔ)言的交互操作,使用戶(hù)能通過(guò)程序接口很方便地進(jìn)行程序間的調(diào)用和轉(zhuǎn)換。MATLAB 有著功能強(qiáng)大、豐富的函數(shù)工具箱,這是整個(gè) MATLAB 語(yǔ)言得以如此快速發(fā)展的重要因素之一。這些函數(shù)工具箱大致可以分為兩大類(lèi):功能型工具箱和領(lǐng)域型工具箱。功能型工具箱提供了對(duì)內(nèi)核的支持,它主要用來(lái)擴(kuò)充 MATLAB 的符號(hào)計(jì)算功能、圖形建模仿真功能、文字處理功能以及與硬件實(shí)時(shí)交互功能,屬于 MATLAB 自身系統(tǒng),可以用于多種學(xué)科。而領(lǐng)域型工具箱是專(zhuān)業(yè)性很強(qiáng)的學(xué)科研發(fā)性工具箱,應(yīng)用于不同的學(xué)科。2.3 MATLAB的特點(diǎn)MATLAB 語(yǔ)言有以下五個(gè)特點(diǎn):1. 起點(diǎn)高(1) 每個(gè)變量代表一個(gè)矩陣,它有 n*m 個(gè)元素。從 MATLAB 名字的來(lái)源可知,它以矩陣運(yùn)算而見(jiàn)長(zhǎng),在當(dāng)前的科學(xué)計(jì)算中,幾乎無(wú)處不用矩陣運(yùn)算,這使它的優(yōu)勢(shì)得到了充分的體現(xiàn)。(2) 每個(gè)元素都看作復(fù)數(shù)。這個(gè)特點(diǎn)在其他語(yǔ)言中也是不多見(jiàn)的。(3) 所有的運(yùn)算都對(duì)矩陣和復(fù)數(shù)有效,包括加、減、乘、除、函數(shù)運(yùn)算等。2. 人機(jī)界面適合科技人員(1) 語(yǔ)言規(guī)則與筆算式相似。MATLAB 的程序與科技人員的書(shū)寫(xiě)習(xí)慣相似,因而易寫(xiě)易讀,易于在科技人員之間交流。(2) 矩陣行列數(shù)無(wú)需定義。要輸入一個(gè)矩陣,用其他語(yǔ)言時(shí)必須先定義矩陣的階數(shù),而 MATLAB 則不必用結(jié)束定義語(yǔ)句。輸入數(shù)據(jù)的行列數(shù)就決定了它的階數(shù)。(3) 鍵入算式立即得結(jié)果,無(wú)需編譯。MATLAB 是以解釋方式工作的,及它對(duì)每條語(yǔ)句解釋后立即執(zhí)行,若有錯(cuò)誤也立即作出反應(yīng),便于編程者馬上改正。這些都大大減少了編程和調(diào)試的工作量。3. 強(qiáng)大而簡(jiǎn)易的作圖功能(1) 能根據(jù)輸入數(shù)據(jù)自動(dòng)確定坐標(biāo)繪圖。(2) 能規(guī)定多種坐標(biāo)系(極坐標(biāo),對(duì)數(shù)坐標(biāo)等)(3) 能繪制三維坐標(biāo)中的曲線(xiàn)和曲面。(4) 可設(shè)置不同顏色、線(xiàn)型、視角等。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 13 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊如果數(shù)據(jù)齊全,通常只需一條命令即可出圖。4. 智能化程度高(1) 繪圖時(shí)自動(dòng)選擇最佳坐標(biāo)以及自動(dòng)定義矩陣維數(shù)。(2) 作數(shù)值積分時(shí)自動(dòng)按精度選擇步長(zhǎng)。(3) 自動(dòng)檢測(cè)和顯示程序錯(cuò)誤的能力強(qiáng),易于調(diào)試。5. 功能豐富,可擴(kuò)展性強(qiáng)MATLAB 軟件包含基本部分和專(zhuān)業(yè)擴(kuò)展兩大部分?;静糠职ǎ壕仃嚨倪\(yùn)算和各種變換,代數(shù)和超越方程的求解,數(shù)據(jù)處理和傅立葉變換,數(shù)值積分等,可以充分滿(mǎn)足大學(xué)理工科本科的計(jì)算需要。2.4 MATLAB的程序演示為了學(xué)習(xí) MATLAB 語(yǔ)言的功能和特點(diǎn),下面我們將舉一個(gè)例子進(jìn)行演示,來(lái)更加直觀(guān)的了解 MATLAB 的強(qiáng)大功能。這是一個(gè)基本的數(shù)值運(yùn)算的程序演示,通過(guò)這個(gè)例子我們會(huì)驚嘆 MATLAB的矩陣運(yùn)算功能和可視化的工作環(huán)境。下面我們一步一步進(jìn)入 MATLAB 的工作環(huán)境中。(1)首先進(jìn)入到 MATLAB 工作環(huán)境中,如圖 2.1 所示:圖 2.1 MATLAB 工作界面(2)建立一個(gè)新 M 的文件,可以打開(kāi) M 文件編輯器,打開(kāi)路徑為:【File】→【New】→【M-File】 。并且編寫(xiě)代碼,代碼如下:a = [1 2 3 4 6 4 3 4 5]VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 14 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊b = a + 2plot(b)grid onxlabel('Sample #')ylabel('Pounds')plot(b,'*')axis([0 10 0 10])A = [1 2 0; 2 5 -1; 4 10 -1]B = A'C = A * B C = A .* BX = inv(A)I = inv(A) * A eig(A)svd(A)p = round(poly(A))roots(p)q = conv(p,p)r = conv(p,q)plot(r);whosAsqrt(-1)輸入代碼并保存,按 F5 運(yùn)行。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 15 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊圖 2.3 圖形表示向量加法的結(jié)果顯示a =1 2 3 4 6 4 3 4 5b =3 4 5 6 8 6 5 6 7A =1 2 02 5 -14 10 -1B =1 2 42 5 100 -1 -1C =5 12 2412 30 5924 59 117C =1 4 04 25 -100 -10 1X =5 2 -2-2 -1 10 -2 1VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 16 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊I =1 0 00 1 00 0 1ans =3.73210.26791.0000ans =12.31710.51490.1577p =1 -5 5 -1ans =3.73211.00000.2679q =1 -10 35 -52 35 -10 1r =1 -15 90 -278 480 -480 278 -90 15 -1Name Size Bytes ClassA 3x3 72 double arrayB 3x3 72 double arrayC 3x3 72 double arrayI 3x3 72 double arrayX 3x3 72 double arraya 1x9 72 double arrayans 3x1 24 double arrayb 1x9 72 double arrayp 1x4 32 double arrayq 1x7 56 double arrayr 1x10 80 double arrayGrand total is 87 elements using 696 bytesVB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 17 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊A =1 2 02 5 -14 10 -1ans =0 + 1.0000i由以上例子我們可以看出 MATLAB 具有很強(qiáng)大的矩陣運(yùn)算功能以及可視化功能。2.5 MATLAB的優(yōu)缺點(diǎn)MATLAB 集數(shù)值計(jì)算、符號(hào)計(jì)算和圖形可視化三大基本功能于一體的,功能強(qiáng)大、操作簡(jiǎn)單的語(yǔ)言,是國(guó)際公認(rèn)的優(yōu)秀數(shù)學(xué)應(yīng)用軟件之一。MATLAB 擅長(zhǎng)處理數(shù)值計(jì)算和系統(tǒng)模擬仿真,已被廣泛應(yīng)用于數(shù)字信號(hào)處理、電力系統(tǒng)仿真、圖像處理、系統(tǒng)識(shí)別等各個(gè)領(lǐng)域。但是 MATLAB 也存在一些缺點(diǎn):1、和其他高級(jí)程序相比,程序的執(zhí)行速度較慢,那是因?yàn)?MATLAB 的程序是解釋執(zhí)行,所以速度較慢;2、對(duì)于底層硬件操作以及編程界面方面遠(yuǎn)遠(yuǎn)比不上 VB、VC 等軟件。鑒于 MATLAB 和 VB 各自的優(yōu)勢(shì),為了提高工程軟件的開(kāi)發(fā)效率和質(zhì)量,將兩種軟件結(jié)合起來(lái)進(jìn)行工程應(yīng)用軟件的開(kāi)發(fā)便成了實(shí)際的需要。下面的兩個(gè)章節(jié)我們將研究 MATLAB 和 VB 混合編程的技術(shù)。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 18 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊第三章 VB 和 MATLAB混合編程技術(shù)方法簡(jiǎn)介Microsoft Visual Basic 是由微軟公司開(kāi)發(fā)的在 Windows 操作平臺(tái)上的主力編程語(yǔ)言之一,由于它避開(kāi)了 C++編程過(guò)分繁瑣和抽象的缺點(diǎn),同時(shí)又能實(shí)現(xiàn)大多數(shù)Windows 編程目的,因而一經(jīng)推出就風(fēng)靡全球,目前全世界大約有幾百萬(wàn)程序員在使用VB 編程 ,是一種十分強(qiáng)大和有生命力的 Windows 編程語(yǔ)言。雖然 VB 語(yǔ)言容易上手,界面容易設(shè)計(jì),但是對(duì)于數(shù)值計(jì)算方面能力欠佳。與之相比 ,MATLAB 是新近發(fā)展起來(lái)的一種深受廣大編程人員喜愛(ài)的數(shù)學(xué)工具軟件。MATLAB 語(yǔ)言可以提供與矩陣有關(guān)的強(qiáng)大的數(shù)據(jù)處理和圖形顯示功能,為軟件開(kāi)發(fā)人員在程序編制過(guò)程中實(shí)現(xiàn)數(shù)值計(jì)算和圖形顯示新添了又一行之有效的開(kāi)發(fā)平臺(tái)。但是,MATLAB 的界面功能比較弱,給友好界面的開(kāi)發(fā)應(yīng)用或軟件演示系統(tǒng)帶來(lái)不便。為了提高工程計(jì)算軟件的開(kāi)發(fā)效率和質(zhì)量,可采取把 VB 可視化編程語(yǔ)言和 MATLAB 工具相結(jié)合的辦法,充分利用MATLAB 的運(yùn)算功能和 VB 的開(kāi)發(fā)界面方便的特點(diǎn)進(jìn)行混合編程,即用 VB 來(lái)設(shè)計(jì)界面,作為主程序,調(diào)用用 MATLAB 編寫(xiě)的子程序,以此開(kāi)發(fā)出高質(zhì)量、高性能的工程計(jì)算軟件系統(tǒng)當(dāng)屬首選方案。下面我們介紹 VB 和 MATLAB 接口實(shí)現(xiàn)的方法介紹。3.1 VB和 MATLAB接口實(shí)現(xiàn)方法介紹3.1.1基于 ActiveX技術(shù)的接口實(shí)現(xiàn)ActiveX 是 Microsoft 提出的一組使用 COM(ComponentObjectModel,部件對(duì)象模型)使得軟件部件在網(wǎng)絡(luò)環(huán)境中進(jìn)行交互的技術(shù)集,它與具體的編程語(yǔ)言無(wú)關(guān)。ActiveX 的特點(diǎn)就是使不同的軟件對(duì)象可以跨進(jìn)程、跨平臺(tái)并能在網(wǎng)絡(luò)上進(jìn)行交互。MATLABActiveX 自動(dòng)化服務(wù)的功能主要包括在 MATLAB 工作空間執(zhí)行 MATLAB 命令,以及直接從工作空間存取矩陣等,下面列出了 MATLAB 自動(dòng)化服務(wù)支持的幾個(gè)主要方法。(1)Execute(CommandasString)方法:執(zhí)行本方法將調(diào)用 MATLAB 執(zhí)行一條 Command 字符串決定的 MATLAB 命令,同時(shí)返回一條字符串表示命令的執(zhí)行情況。任何能在MATLAB 命令行窗口執(zhí)行的命令均可以被包括在 Command 字符串中。(2)GetFullMatrix 方法:該方法用來(lái)將 MATLAB 中的一個(gè)矩陣變量傳送到 VB 程序的一個(gè)一維數(shù)組或二維數(shù)組中。(3)PutFullMatrix 方法:該項(xiàng)方法是將 VB 程序中的一個(gè)一維數(shù)組或二維數(shù)組傳送至MATLAB 中的一個(gè)矩陣變量中。(4)VoidMinimizeCommandWindow()方法:該方法用 MATLAB 使命令行窗口最小化,具體調(diào)用如下:CallMATLABMinimizeCommandWindow()。(5)VoidMaximizeCommandWindow()方法:該方法用 MATLAB 使命令行窗口最大化,具體調(diào)用如下:CallMATLABMaximizeCommandWindow()。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁(yè) 第- 19 -頁(yè) ┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線(xiàn)┊┊┊┊┊┊┊┊┊┊┊┊┊Microsoft 的 ActiveX 技術(shù)使 VB 在不了解應(yīng)用程序?qū)崿F(xiàn)的情況下控制自動(dòng)化對(duì)象。MATLAB 實(shí)現(xiàn)了 ActiveX 服務(wù)支持,在 VB 中通過(guò)調(diào)用 MATLAB 引擎(Engine)利用ActiveX 通道與 Object.Execute 可直接使用 MATLAB 的函數(shù)庫(kù)和圖形庫(kù)。3.1.2基于 DDE技術(shù)的接口實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)交換(DDE) ,即 DynamicDataExchange 的縮寫(xiě)。它是又微軟公司提出的,是基于 WINDOWS 的消息機(jī)制,兩個(gè) WINDOWS 應(yīng)用程序通過(guò)相互之間傳遞消息進(jìn)行“對(duì)話(huà)” ,從而完成數(shù)據(jù)的請(qǐng)求、應(yīng)答、傳輸,這兩個(gè)程序分別被稱(chēng)為“Server”和“Client” 。Server 是數(shù)據(jù)的提供者,Client 是數(shù)據(jù)的請(qǐng)求和接受者。通過(guò) DDE方式建立的數(shù)據(jù)連接通道是雙向的, “Client”不但能讀取 “Server”中的數(shù)據(jù),還能對(duì)其進(jìn)行修改??蛻?hù)程序啟動(dòng)一個(gè) DDE 對(duì)話(huà),它必須識(shí)別兩種服務(wù)器定義的參數(shù) :①要對(duì)話(huà)的服務(wù)名;②對(duì)話(huà)的主題名。當(dāng)一個(gè)服務(wù)器程序獲得客戶(hù)程序一個(gè)會(huì)話(huà)的要求,它響應(yīng)這個(gè)要求,并建立一個(gè) DDE 會(huì)話(huà)。服務(wù)器和主題名唯一地定義一個(gè)會(huì)話(huà) ,在一個(gè) DDE 會(huì)話(huà)中,客戶(hù)和服務(wù)器程序通過(guò)項(xiàng)目名交換數(shù)據(jù) ,項(xiàng)目名是數(shù)據(jù)的一個(gè)引用。MATLAB 有兩種主題,分別為 System 和 Engine。System 主題允許用戶(hù)瀏覽服務(wù)器提供的主題列表、System 主題項(xiàng)目和服務(wù)器端所支持的格式。 Engine 主題讓用戶(hù)通過(guò)提供一個(gè)命令來(lái)運(yùn)行 MATLAB、導(dǎo)入和導(dǎo)出數(shù)據(jù),此時(shí) MATLAB 作為服務(wù)器端使用。Engine 主題支持以下選項(xiàng):①EngEvalString 用于在 MATLAB 中運(yùn)行一個(gè)命令;②EngString Result 用來(lái)請(qǐng)求 DDE 執(zhí)行命令的字符串結(jié)果; ③EngFigureResult 用來(lái)請(qǐng)求 DDE 執(zhí)行命令的圖形結(jié)果。 DDE 的功能沒(méi)有 ActiveX 那么強(qiáng),但是 DDE 也有其自身優(yōu)勢(shì),就是編碼方式比較簡(jiǎn)單,可用于實(shí)現(xiàn)一些簡(jiǎn)單的功能。3.1.3基于 MatrixVB技術(shù)的接口實(shí)現(xiàn)MatrixVB 是由原 MathTools 公司開(kāi)發(fā)的專(zhuān)門(mén)用于 VB 的一個(gè) COM 組件,該組件提供了 600 多個(gè)函數(shù),包括基本的數(shù)學(xué)運(yùn)算和功能強(qiáng)大的信號(hào)處理、線(xiàn)性代數(shù)、串運(yùn)算及圖形圖像處理功能等,專(zhuān)門(mén)用來(lái)加強(qiáng) VB 的矩陣運(yùn)算與圖形繪制功能。MatrixVB是與 MATLAB 相獨(dú)立的軟件產(chǎn)品,可以脫離 MATLAB 運(yùn)行的獨(dú)立的應(yīng)用程序。安裝后,就可以在 VB 中引用它,好處是可以避免重復(fù)性勞動(dòng),但執(zhí)行效率較低,實(shí)時(shí)運(yùn)算難以實(shí)現(xiàn)。3.1.4基于動(dòng)態(tài)鏈接庫(kù) DLL方法的接口實(shí)現(xiàn)Matco
收藏