DZ207VB和MATLAB混合編程技術(shù)研究
DZ207VB和MATLAB混合編程技術(shù)研究,dz207vb,以及,matlab,混合,編程,技術(shù)研究
VB 和 MATLAB 混合編程技術(shù)研究裝訂線摘 要充分利用 MATLAB 強大的運算及顯示功能和 VB 開發(fā)界面友好的特點,將二者有機結(jié)合,可以開發(fā)出復(fù)雜的、界面友好的人機交互處理軟件。重點介紹了應(yīng)用 VB和 MATLAB 進行混合編程的幾種技術(shù),熟練掌握這些技術(shù),將使編程工作變得輕松自如。VB 和 MATLAB 的混合編程方法,通過建立 VB 和 MATLAB 間的 ActiveX 連接,實現(xiàn) VB 應(yīng)用程序中調(diào)用 MATLAB,建立與 MATLAB ActiveX 服務(wù)器的連接。該方法通過利用 ActiveX 技術(shù)、應(yīng)用 DDE 與 MATLAB 通訊、使用 Matrix VB、生成執(zhí)行文件、編譯動態(tài)鏈接庫等步驟實現(xiàn)。其 MATLAB 軟件提供 M 函數(shù)編譯為 COM 組件工具,使用該工具可方便制作出相關(guān) COM 組件,以供其他支持COM 的編程語言調(diào)用,實現(xiàn) MATLAB 和其它編程語言的整合。關(guān)鍵詞:VB, MATLAB,混合編程, ActiveX 技術(shù), DLLVB 和 MATLAB 混合編程技術(shù)研究裝訂線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 servers 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ù)研究裝訂線目 錄前 言 .- 1 -第一章 VISUAL BASIC 語言概述 .- 3 -1.1 VISUAL BASIC 語言的發(fā)展 .- 3 -1.2 VISUAL BASIC 語言的基本特點 .- 3 -1.3 VISUAL BASIC 語言的應(yīng)用實例 .- 5 -1.4 總結(jié) VISUAL BASIC 語言的優(yōu)缺點 .- 9 -第二章 MATLAB 的概述 .- 10 -2.1 MATLAB 的簡介.- 10 -2.2 MATLAB 的主要功能.- 10 -2.3 MATLAB 的特點.- 11 -2.4 MATLAB 的程序演示.- 12 -2.5 MATLAB 的優(yōu)缺點.- 15 -第三章 VB 和 MATLAB 混合編程技術(shù)方法簡介 .- 17 -3.1 VB 和 MATLAB 接口實現(xiàn)方法介紹 .- 17 -3.1.1 基于 ActiveX 技術(shù)的接口實現(xiàn) .- 17 -3.1.2 基于 DDE 技術(shù)的接口實現(xiàn) .- 18 -3.1.3 基于 MatrixVB 技術(shù)的接口實現(xiàn) .- 18 -3.1.4 基于動態(tài)鏈接庫 DLL 方法的接口實現(xiàn) .- 18 -3.1.5 基于 COM 組件技術(shù)的接口實現(xiàn) .- 19 -3.2 結(jié)論 .- 19 -第四章 基于 OLE、COM 組件實現(xiàn)接口技術(shù) .- 20 -4.1 基于 OLE 的接口實現(xiàn) .- 20 -4.1.1 OLE 方法簡介 .- 20 -4.1.2 OLE 方法舉例 .- 21 -4.2 基于 COM 組件接口實現(xiàn) .- 25 -4.2.1 COM 基礎(chǔ)知識 .- 26 -4.2.2 MATLAB COM Builder 基礎(chǔ)知識 .- 28 -4.2.3 基于 COM 組件實現(xiàn)接口技術(shù)舉例 .- 32 -結(jié) 束 語 .- 35 -致 謝 .- 36 -參 考 資 料 .- 37 -VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 1 -頁 裝訂線前 言MATLAB 是美國 MathWorks 公司研制開發(fā)的軟件產(chǎn)品,他是當(dāng)今世界上使用最為廣泛的科學(xué)計算軟件之一。MATLAB 具有強大、豐富的內(nèi)置函數(shù),以及高度靈活的可編程性,所以特別適合數(shù)據(jù)處理以及結(jié)果的圖形化顯示。另外,MATLAB 包含多種根據(jù)應(yīng)用領(lǐng)域劃分的工具箱,這些工具箱及大地擴展了 MATLAB 在這些領(lǐng)域的使用功能,其中應(yīng)用最為廣泛的工具箱包括數(shù)字信息處理、圖像處理等?,F(xiàn)在,無論是在學(xué)術(shù)界還是在工業(yè)界,MATLAB 逐漸成為大多數(shù)科研人員的首選計算語言,而 MATLAB 本身也逐漸成為一種工業(yè)界通用的計算語言。一些工業(yè)產(chǎn)品的研究與開發(fā)已開始完全使用 MATLAB,比如日本豐田汽車公司的引擎控制單元(ECU)系統(tǒng)的研發(fā)等。在MathWorks 公司的網(wǎng)站上可以看到更多關(guān)于 MATLAB 的工業(yè)應(yīng)用實例。盡管 MATLAB 在科學(xué)研究以及工業(yè)技術(shù)開發(fā)方面有著極為廣泛的應(yīng)用,但這并不意味著在解決實際問題時,MATLAB 總是無往不利。事實上,在某些情況下,完全使用 MATLAB 作為開發(fā)工具雖然能夠完成任務(wù),但它并不是最佳手段。這里“最佳”的意義包括高效的程序開發(fā)過程、高效的程序執(zhí)行速度,以及簡單易行的程序部署方法等。幸運的是,MATLAB 提供了靈活而有強大的接口技術(shù),使用者可以在 MATLAB 程序里調(diào)用其他語言編寫的功能,比如可以把一些繁重的計算模塊以 C/C+或 FORTRAN編寫,然后利用 MEX 接口在 MATLAB 中調(diào)用這些模塊,從而提高整個程序的執(zhí)行效率。另外也可以利用其他語言如 C/C+和操作系統(tǒng)的密切聯(lián)系,使得 MATLAB 能夠調(diào)用操作系統(tǒng)提供的一些功能活著實現(xiàn)與硬件系統(tǒng)之間的通信,從而擴展 MATLAB 程序的功能。MATLAB 的另外一種接口則是如何在其它編程語言中調(diào)用 MATLAB 的數(shù)值計算和圖形功能,從而加強應(yīng)用程序的功能。這種應(yīng)用在工業(yè)界的使用比較廣泛。MATLAB提供 C/C+編譯器,可以方便地把 M 方程編譯連接成可以在其他編程語言或者應(yīng)用程序中使用的庫函數(shù)。Visual Basic 是由微軟公司開發(fā)的可視化編程語言之一,由于它簡單易學(xué)的特點,只要稍有編程基礎(chǔ)就可以很快掌握,可視化的用戶界面設(shè)計功能,把程序設(shè)計人員從繁瑣復(fù)雜的界面設(shè)計中解脫出來。因而很快就風(fēng)靡全球,是一種十分強大和有生命力 Windows 編程語言。但是我們知道 VB 語言也有它的缺點,即對于數(shù)值計算方面其能力欠佳。所以本論文主要介紹 MATLAB 和 Visual Basic 的混合編程技術(shù)研究,MATLAB 與 Visual Basic 接口,有使用一般動態(tài)鏈接庫、DDE、OLE、ActiveX 和 COM組件等多種方法。我將在本論文中講解 MATLAB 接口的相關(guān)知識,實現(xiàn) MATLAB 和Visual Basic 的混合編程,結(jié)合實例給大家一個直觀和清晰地思路。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 2 -頁 裝訂線總之,MATLAB 的接口技術(shù)可以讓使用者不只局限于一種計算工具,這些接口技術(shù)使得人們可以更好的利用手中的工具,結(jié)合多個工具的長處,更好的解決問題。如果使用者能夠靈活、正確地使用各種接口技術(shù),將會有助于他們找到針對實際問題的優(yōu)秀的解決方案。在結(jié)構(gòu)方面,本論文基本上分為三個部分,第一部分提出問題,為什么要研究VB 和 MATLAB 混合編程,并分別用兩個例子實現(xiàn)功能進而比較兩個語言的優(yōu)缺點;第二部分介紹 VB 和 MATLAB 混合編程技術(shù)的方法;第三部分 VB 和 MATLAB 混合編程技術(shù)的實現(xiàn),在這一章中我主要介紹了基于 OLE 的接口實現(xiàn)和 COM 組件的實現(xiàn),并通過具體的示例演示給大家,簡潔直觀。在每個章節(jié)的安排上,將首先講述基礎(chǔ)知識,以及使用中需要注意的事項。相信將能夠滿足讀者的需求。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 3 -頁 裝訂線第一章 Visual Basic 語言概述首先我將分別介紹 Visual Basic 和 MATLAB 的相關(guān)知識,利用具體的操作體現(xiàn)兩個軟件的各自優(yōu)勢,為 MATLAB 和 Visual Basic 混合編程的技術(shù)研究做下直觀的鋪墊。利用彼此的優(yōu)勢,避開缺點把兩個軟件很好的結(jié)合起來。1.1 Visual Basic語言的發(fā)展Basic 是 Beginners All-Purpose Symbolic Instruction Code(初學(xué)者通用符號指令代碼)的縮寫,在高級語言中占有重要地位,是專門為初學(xué)者設(shè)計的計算機語言。第一代 Basic 于 1964 年在 Dartmouth 學(xué)院由 John Kemeny 和 Thomas 設(shè)計,由于它的語法很接近人類所使用的自然語言和數(shù)學(xué)表達式,只有十幾條語句,簡單易用,因而受到廣大計算機初學(xué)者的喜愛,很快就得到廣泛的應(yīng)用;第二代 Basic 是在 20 世紀(jì) 70 年代中期到 80 年代中期出現(xiàn)的,其功能有了較大的擴充,應(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(簡稱為 VB)是美國 Microsoft 公司推出的、專門針對 32 位Windows 操作系統(tǒng)的程序設(shè)計語言,它從 Basic 發(fā)展到 Visual Basic,經(jīng)歷了二十多年的歷程。Visual 指的是開發(fā)圖形用戶界面(GUI)的方法, Visual Basic 在原有Basic 語言的基礎(chǔ)上進一步發(fā)展,至今包含了數(shù)百條語句、函數(shù)和關(guān)鍵詞,其中很多都和 Windows GUI 有直接關(guān)系。專業(yè)人員可以用 Visual Basic 實現(xiàn)其他任何Windows 編程語言的功能,而初學(xué)者只要掌握幾個關(guān)鍵詞,就可以建立實用的應(yīng)用程序。Visual Basic 1.0 版是 1991 年 Microsoft 公司推出的基于窗口的可視化開發(fā)工具,當(dāng)時它的功能相對較少,也有一定的缺陷。但 Microsoft 公司憑借其強大的技術(shù)優(yōu)勢,經(jīng)過不斷的努力,于 1993 年推出 Visual Basic 3.0,這個版本已初具規(guī)模,并進入了實用階段,利用它可以快速創(chuàng)建圖形用戶界面和多媒體等應(yīng)用程序。1995 年推出的 Visual Basic 4.0 提供了強大的數(shù)據(jù)庫管理功能,使之成為管理信息系統(tǒng)(MIS, Management Information System)的重要開發(fā)工具。而在 1998 年推出的 Visual Basic 6.0,則在開發(fā)環(huán)境和功能上都做了很大的完善、擴充和增強。實踐證明,Visual Basic 以其簡單易學(xué)、功能強大和面向?qū)ο缶幊痰膬?yōu)勢,已經(jīng)發(fā)展為快速應(yīng)用程序開發(fā)(RAD, Rapid Application Development)工具的代表,受到廣大專業(yè)程序設(shè)計者和計算機愛好者的普遍歡迎。1.2 Visual Basic 語言的基本特點在可視化編程上,Visual Basic 已成為新一代程序設(shè)計語言的杰出代表。與VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 4 -頁 裝訂線傳統(tǒng)的語言相比,Visual Basic 在許多方面都有了重要的改革和突破,下面僅介紹最基本的特點。(1) 提供了好學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境Visual Basic 的集成開發(fā)環(huán)境是在 Windows 平臺上實現(xiàn)的。在這個環(huán)境中,開發(fā)人員可以進行界面設(shè)計、代碼編寫和程序調(diào)試,直至可以把應(yīng)用程序編譯成可執(zhí)行程序,在脫離 Visual Basic 的設(shè)計環(huán)境下直接運行。這個開發(fā)環(huán)境支持整個面向?qū)ο箝_發(fā)的全過程,具有極大的方便性和高效性。(2) 面向?qū)ο蟮目梢暬O(shè)計工具在 VB 開發(fā)環(huán)境中,應(yīng)用了面向?qū)ο蟮某绦蛟O(shè)計方法,即把程序和數(shù)據(jù)封裝起來,視為一個對象工具。每個對象都是可視的,程序員在設(shè)計時,只需要根據(jù)設(shè)計界面的要求,利用現(xiàn)有的對象工具,直接在屏幕上設(shè)置不同的對象(如窗口、菜單、按鈕或滾動條等) ,并為每個對象設(shè)置屬性即可,而不需要編寫大量的代碼去描述界面元素的外觀和位置(這也就是所說的“所見即所得” ) 。通過對這些對象進行屬性的設(shè)置和調(diào)整,就能改變對象的外觀及動作的方式,這樣用戶可以方便地設(shè)計出美觀、友好的界面,從而簡化了界面設(shè)計的方法,大大提高了編程效率。(3) 事件驅(qū)動的編程機制在設(shè)計好了用戶界面后,就可以編寫相應(yīng)的程序了。事件驅(qū)動是增強程序圖形界面交互性的主要方法,是指利用用戶的動作或行為控制程序運行的流向。用戶的每一個動作或操作行為都可產(chǎn)生一個事件(如用戶的鍵盤或鼠標(biāo)操作、系統(tǒng)消息、程序觸發(fā)等) ,每個事件都可驅(qū)動一段程序的運行,程序員只需編寫響應(yīng)用戶動作的代碼即可。這樣編寫的程序代碼短、易編寫、易維護、且對象之間的動作順序可由程序的使用者靈活控制。(4) 結(jié)構(gòu)化的程序設(shè)計語言傳統(tǒng)編程方法是面向過程的機制,程序是按事先設(shè)計的程序流程來運行。程序間要求有嚴謹?shù)倪壿嬯P(guān)系,且程序長、難編寫、難維護。而 VB 系統(tǒng)提供了豐富的數(shù)據(jù)類型、眾多的內(nèi)部函數(shù)、子程序、時間子程序和自定義函數(shù)等模塊,各個子程序模塊之間彼此獨立,也可以相互聯(lián)系,從而形成了結(jié)構(gòu)化程序,簡單易學(xué)。(5) 支持多種數(shù)據(jù)庫訪問系統(tǒng)Visual Basic 可以利用數(shù)據(jù)控制或通過 ODBC 訪問數(shù)據(jù)庫,獲得后臺的數(shù)據(jù)源支持,從而使 Visual Basic 前臺的界面與數(shù)據(jù)處理功能結(jié)合起來,擴大Visual Basic 的應(yīng)用范圍。Visual Basic 可以訪問的數(shù)據(jù)庫主要有Access、 dBASE、 FoxBASE、 Paradox 等,也可以訪問 Microsoft VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 5 -頁 裝訂線Excel、Lotus 1-2-3 等多種電子表格。 Visual Basic 還可以利用對象的連接與嵌入技術(shù)(OLE) ,開發(fā)出具有圖、文、聲、像、 Web 等對象合成的應(yīng)用程序,并可以方便地使用標(biāo)準(zhǔn)的 Active 部件,調(diào)用標(biāo)準(zhǔn)的接口,用于 Web 或其他支持這一技術(shù)的程序中。Visual Basic 采用了部件編程的思想,在 Visual Basic 中創(chuàng)建的部件可以自用,也可以在其他開發(fā)環(huán)境(如 VC+)中使用,還可以引用其他開發(fā)工具建立的部件。由于具有接口繼承性,所以通過部件編程,可以在Visual Basic 中實現(xiàn)代碼重用。在數(shù)據(jù)庫應(yīng)用方面,增加了 ADO 功能,Visual Basic 不僅可以支持本地數(shù)據(jù)庫,而且可以連接遠程數(shù)據(jù)服務(wù)器,大大增強了數(shù)據(jù)處理能力;在 Internet 應(yīng)用方面, Visual Basic 可以通過文檔或程序訪問Internet,創(chuàng)建 Internet 服務(wù)器應(yīng)用程序,支持 DHTML(動態(tài) HTML 技術(shù))和Web 程序發(fā)布等。(6) OLE 和 Active 技術(shù)的應(yīng)用OLE(Object Link & Embed)技術(shù)是指對象的鏈接與嵌入技術(shù),能夠用于開發(fā)集聲音、圖像、動畫、字處理和 Web 對象等于一體的應(yīng)用程序等。Active 技術(shù)可以使開發(fā)人員擺脫特定語言的束縛,方便地使用標(biāo)準(zhǔn)的Active 部件,調(diào)用標(biāo)準(zhǔn)的接口,實現(xiàn)特定的功能。OLE 技術(shù)是 VB 的核心,Active 是 OLE 的發(fā)展。(7) 增強的網(wǎng)絡(luò)功能Visual Basic 最重要的新特性之一,是提供了 DHTML(Dynamic HTML)設(shè)計工具。這種技術(shù)可以使 Web 頁面設(shè)計者動態(tài)地創(chuàng)建和編輯界面,使用戶能夠在VB 中開發(fā)出多功能的網(wǎng)絡(luò)應(yīng)用技術(shù)。(8)多個應(yīng)用程序向?qū)B 的應(yīng)用程序向?qū)Э梢宰詣觿?chuàng)建不同類型、不同功能的應(yīng)用程序,其中包括應(yīng)用程序向?qū)?、安裝向?qū)А?shù)據(jù)對象向數(shù)據(jù)窗體向?qū)?、IIS 應(yīng)用程序和DHTML 等。(9)完備的聯(lián)機幫助系統(tǒng)與 Window 環(huán)境下的軟件一樣,在 VB 中隨時可以利用菜單或 f1功能鍵得到所需要的幫助信息。幫助窗口的信息和示例代碼可以進行復(fù)制、粘貼、為用戶學(xué)習(xí)和使用 VB 提供了捷徑。1.3 Visual Basic語言的應(yīng)用實例一般來說,在 Visual Basic 中,按照下列步驟操作即可輕松地編輯出一個簡單的 Visual Basic 程序:(1) 利用工具箱中的工具創(chuàng)建面向使用者的輸入輸出界面。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 6 -頁 裝訂線(2) 設(shè)計控件屬性值。(3) 編寫代碼。下面以一個簡單的范例,說明上面三個步驟的操作方法。進入 Visual Basic集成開發(fā)環(huán)境要創(chuàng)建 VB 應(yīng)用程序,首先要進入 Visual Basic 6.0 的集成開發(fā)環(huán)境,具體操作步驟如下:(1)單擊“開始”|“所有程序”|“Microsoft Visual Basic 6.0 中文版”|“Microsoft Visual Basic 6.0 中文版”命令,將彈出“新建工程”對話框,如圖所示.圖 1.1 “新建工程”對話框(2)雙擊“標(biāo)準(zhǔn) EXE”圖標(biāo),新建一個標(biāo)準(zhǔn)文件工程,將彈出如圖 1.2 所示的Visual Basic 的 IDE 集成開發(fā)環(huán)境。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 7 -頁 裝訂線、圖 1.2 VB 6.0 的集成開發(fā)環(huán)境(3)添加控件 Lable1、Lable2、Text1、Command1、Command2圖 1.3 Form 窗體(4) 在屬性窗口設(shè)定各控件的屬性如表 1.1:表 1.1 控件屬性表VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 8 -頁 裝訂線圖 1.4 更改屬性完成(5) 編輯代碼,要進入代碼窗口,可以使用以下四種方法中的一種: 單擊“視圖”|“代碼窗口”命令??丶Q 控件類型 屬性 屬性內(nèi)容設(shè)定Name(名稱) FormForm1 窗體Caption(標(biāo)題) 歡迎問候程序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 頁 第- 9 -頁 裝訂線 在控件上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“查看代碼”選項。 直接在控件上雙擊鼠標(biāo)右鍵。 在工程資源管理器中單擊 按鈕。執(zhí)行以上任意一種操作,都將打開如圖 1.5 所示的代碼窗口,并輸入代碼。圖 1.5 代碼編輯框(6) 當(dāng)代碼編譯完畢后,最好先將文件保存,然后再執(zhí)行程序,下面將上面編輯好的“歡迎問候程序”程序先保存再執(zhí)行一次,按 F5 鍵執(zhí)行。執(zhí)行結(jié)果如圖 1.6 所示:VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 10 -頁 裝訂線圖 1.6 執(zhí)行結(jié)果顯示1.4 總結(jié) Visual Basic 語言的優(yōu)缺點由上面的例子可以看出 Visual Basic 的優(yōu)點就是簡單易學(xué)且功能豐富,能夠迅速有效的編制優(yōu)良的可視化界面,同時避開了 C+編程中的過分繁瑣和抽象的特點,因而一經(jīng)推出就成為 Windows 平臺上的主力編程語言之一。 VB 的缺點在于運算速度慢,不適合進行大型的數(shù)值計算和圖形處理,使其在一些專業(yè)領(lǐng)域方面不能得到充分的利用。 為了增強 Visual Basic 的運算能力,我們要研究 MATLAB 和 Visual Basic 的混合編程,揚長避短,把兩個軟件有效地結(jié)合起來。下面我們來認識一下 MATLAB7.0.1,了解一下 MATLAB 的優(yōu)缺點,從而比較兩個軟件,更好的把兩個軟件運用起來。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 11 -頁 裝訂線第二章 MATLAB 的概述2.1 MATLAB的簡介實踐的需要推動了科技的發(fā)展,從而促使了社會的進步。由于與數(shù)學(xué)經(jīng)常打交道的科學(xué)家、工程技術(shù)人員在實際工作中大量數(shù)學(xué)計算的需要,便促使了具有數(shù)值計算強大功能和卓越的數(shù)據(jù)可視化能力的計算機高級語言 MATLAB的出現(xiàn)。MATLAB 是在 20 世紀(jì) 80 年代初期,由美國的 MathWorks 軟件開發(fā)公司正式推出的一種數(shù)學(xué)工具軟件。MATLAB 軟件以矩陣運算為基礎(chǔ),把計算、可視化、程序設(shè)計有機地融合到了一個簡單易學(xué)的交互式工作環(huán)境中,其出色的數(shù)值計算能力和強大的圖形處理功能得到了廣大科研人員和工程技術(shù)人員的垂青。MATLAB 擁有功能全面的函數(shù)庫,它把大量的函數(shù)封裝起來,讓用戶脫離了繁瑣復(fù)雜的程序設(shè)計過程,只需要將精力集中到模型建立的工作上即可,大大提高了工作效率。MATLAB 系統(tǒng)由 MATLAB 內(nèi)核和其輔助工具箱組成。MATLAB 內(nèi)核是由大量的內(nèi)部函數(shù)及用戶自定義的函數(shù)構(gòu)成。通過對這些函數(shù)的調(diào)用,可以簡便地處理具體的技術(shù)問題。利用 MATLAB 可以實現(xiàn)科學(xué)計算、符號運算、算法研究、數(shù)學(xué)建模和仿真、數(shù)據(jù)分析和可視化、科學(xué)工程繪圖以及圖形用戶界面設(shè)計等強大功能。MATLAB 經(jīng)過這些年的不斷更新,交互性越來越好,功能也變得越來越強大?,F(xiàn)在,MATLAB 軟件已經(jīng)成為了國際上應(yīng)用最廣泛的、公認的最優(yōu)秀的數(shù)學(xué)應(yīng)用軟件之一。MATLAB 為用戶提供了豐富而實用的資源,它涵蓋了許多門類的科學(xué)研究,如數(shù)學(xué)、控制、通信、數(shù)字信號處理、數(shù)字圖像處理、經(jīng)濟和地理等。這極大地方便了社會上各個行業(yè)的科技工作者。在國外的大學(xué)中,MATLAB 是學(xué)生必須要掌握的一種基本技能。近年來,它已經(jīng)由最初在科研單位和高等院校中的仿真研究,逐漸普及到了具體工業(yè)部門中被用來解決實際具體問題。在國內(nèi)最近幾年也正由于 MATLAB 本身的巨大優(yōu)勢而興起了學(xué)習(xí)MATLAB、應(yīng)用 MATLAB 的高潮。2.2 MATLAB的主要功能MATLAB 中的核心是一個基于矩陣運算的快速解釋程序。它以交互式操作接收用戶輸入的各種指令,輸出計算結(jié)果。它提供了一個開放式的集成環(huán)境,用戶可以運行系統(tǒng)所提供的各種命令,來實現(xiàn)自己所要達到的目標(biāo)操作。具體地說來,MATLAB 的主要功能有:強大的數(shù)值運算功能;數(shù)據(jù)可視化功能;動態(tài)系統(tǒng)仿真;數(shù)據(jù)處理;數(shù)學(xué)計算;數(shù)字信號處理及與外部應(yīng)用程序(C 和Fortran)進行動態(tài)鏈接等。MATLAB 在數(shù)值運算上有其獨到之處,不僅如此,它還提供了非常豐富的VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 12 -頁 裝訂線圖形處理功能,對數(shù)值計算的結(jié)果進行圖形化處理,進一步方便了用戶操作,深化了用戶的數(shù)值處理,而且,MATLAB 還提供了句柄這一功能非常強大的面向?qū)ο蟮膱D形系統(tǒng)概念,實現(xiàn)了對圖形更深層次的操作。更重要的是,MATLAB 提供了圖形用戶界面(GUI)設(shè)計功能,用戶可以自行設(shè)計別具風(fēng)格的人機交互界面。此外,MATLAB 提供了與 C 語言或 Fortran 語言的交互操作,使用戶能通過程序接口很方便地進行程序間的調(diào)用和轉(zhuǎn)換。MATLAB 有著功能強大、豐富的函數(shù)工具箱,這是整個 MATLAB 語言得以如此快速發(fā)展的重要因素之一。這些函數(shù)工具箱大致可以分為兩大類:功能型工具箱和領(lǐng)域型工具箱。功能型工具箱提供了對內(nèi)核的支持,它主要用來擴充 MATLAB 的符號計算功能、圖形建模仿真功能、文字處理功能以及與硬件實時交互功能,屬于 MATLAB 自身系統(tǒng),可以用于多種學(xué)科。而領(lǐng)域型工具箱是專業(yè)性很強的學(xué)科研發(fā)性工具箱,應(yīng)用于不同的學(xué)科。2.3 MATLAB的特點MATLAB 語言有以下五個特點:1. 起點高(1) 每個變量代表一個矩陣,它有 n*m 個元素。從 MATLAB 名字的來源可知,它以矩陣運算而見長,在當(dāng)前的科學(xué)計算中,幾乎無處不用矩陣運算,這使它的優(yōu)勢得到了充分的體現(xiàn)。(2) 每個元素都看作復(fù)數(shù)。這個特點在其他語言中也是不多見的。(3) 所有的運算都對矩陣和復(fù)數(shù)有效,包括加、減、乘、除、函數(shù)運算等。2. 人機界面適合科技人員(1) 語言規(guī)則與筆算式相似。MATLAB 的程序與科技人員的書寫習(xí)慣相似,因而易寫易讀,易于在科技人員之間交流。(2) 矩陣行列數(shù)無需定義。要輸入一個矩陣,用其他語言時必須先定義矩陣的階數(shù),而 MATLAB 則不必用結(jié)束定義語句。輸入數(shù)據(jù)的行列數(shù)就決定了它的階數(shù)。(3) 鍵入算式立即得結(jié)果,無需編譯。MATLAB 是以解釋方式工作的,及它對每條語句解釋后立即執(zhí)行,若有錯誤也立即作出反應(yīng),便于編程者馬上改正。這些都大大減少了編程和調(diào)試的工作量。3. 強大而簡易的作圖功能(1) 能根據(jù)輸入數(shù)據(jù)自動確定坐標(biāo)繪圖。(2) 能規(guī)定多種坐標(biāo)系(極坐標(biāo),對數(shù)坐標(biāo)等)(3) 能繪制三維坐標(biāo)中的曲線和曲面。(4) 可設(shè)置不同顏色、線型、視角等。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 13 -頁 裝訂線如果數(shù)據(jù)齊全,通常只需一條命令即可出圖。4. 智能化程度高(1) 繪圖時自動選擇最佳坐標(biāo)以及自動定義矩陣維數(shù)。(2) 作數(shù)值積分時自動按精度選擇步長。(3) 自動檢測和顯示程序錯誤的能力強,易于調(diào)試。5. 功能豐富,可擴展性強MATLAB 軟件包含基本部分和專業(yè)擴展兩大部分。基本部分包括:矩陣的運算和各種變換,代數(shù)和超越方程的求解,數(shù)據(jù)處理和傅立葉變換,數(shù)值積分等,可以充分滿足大學(xué)理工科本科的計算需要。2.4 MATLAB的程序演示為了學(xué)習(xí) MATLAB 語言的功能和特點,下面我們將舉一個例子進行演示,來更加直觀的了解 MATLAB 的強大功能。這是一個基本的數(shù)值運算的程序演示,通過這個例子我們會驚嘆 MATLAB的矩陣運算功能和可視化的工作環(huán)境。下面我們一步一步進入 MATLAB 的工作環(huán)境中。(1)首先進入到 MATLAB 工作環(huán)境中,如圖 2.1 所示:圖 2.1 MATLAB 工作界面(2)建立一個新 M 的文件,可以打開 M 文件編輯器,打開路徑為:【File】【New】【M-File】 。并且編寫代碼,代碼如下:a = 1 2 3 4 6 4 3 4 5VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 14 -頁 裝訂線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 -1B = AC = 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 運行。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 15 -頁 裝訂線圖 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 頁 第- 16 -頁 裝訂線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 頁 第- 17 -頁 裝訂線A =1 2 02 5 -14 10 -1ans =0 + 1.0000i由以上例子我們可以看出 MATLAB 具有很強大的矩陣運算功能以及可視化功能。2.5 MATLAB的優(yōu)缺點MATLAB 集數(shù)值計算、符號計算和圖形可視化三大基本功能于一體的,功能強大、操作簡單的語言,是國際公認的優(yōu)秀數(shù)學(xué)應(yīng)用軟件之一。MATLAB 擅長處理數(shù)值計算和系統(tǒng)模擬仿真,已被廣泛應(yīng)用于數(shù)字信號處理、電力系統(tǒng)仿真、圖像處理、系統(tǒng)識別等各個領(lǐng)域。但是 MATLAB 也存在一些缺點:1、和其他高級程序相比,程序的執(zhí)行速度較慢,那是因為 MATLAB 的程序是解釋執(zhí)行,所以速度較慢;2、對于底層硬件操作以及編程界面方面遠遠比不上 VB、VC 等軟件。鑒于 MATLAB 和 VB 各自的優(yōu)勢,為了提高工程軟件的開發(fā)效率和質(zhì)量,將兩種軟件結(jié)合起來進行工程應(yīng)用軟件的開發(fā)便成了實際的需要。下面的兩個章節(jié)我們將研究 MATLAB 和 VB 混合編程的技術(shù)。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 18 -頁 裝訂線第三章 VB 和 MATLAB混合編程技術(shù)方法簡介Microsoft Visual Basic 是由微軟公司開發(fā)的在 Windows 操作平臺上的主力編程語言之一,由于它避開了 C+編程過分繁瑣和抽象的缺點,同時又能實現(xiàn)大多數(shù)Windows 編程目的,因而一經(jīng)推出就風(fēng)靡全球,目前全世界大約有幾百萬程序員在使用VB 編程 ,是一種十分強大和有生命力的 Windows 編程語言。雖然 VB 語言容易上手,界面容易設(shè)計,但是對于數(shù)值計算方面能力欠佳。與之相比 ,MATLAB 是新近發(fā)展起來的一種深受廣大編程人員喜愛的數(shù)學(xué)工具軟件。MATLAB 語言可以提供與矩陣有關(guān)的強大的數(shù)據(jù)處理和圖形顯示功能,為軟件開發(fā)人員在程序編制過程中實現(xiàn)數(shù)值計算和圖形顯示新添了又一行之有效的開發(fā)平臺。但是,MATLAB 的界面功能比較弱,給友好界面的開發(fā)應(yīng)用或軟件演示系統(tǒng)帶來不便。為了提高工程計算軟件的開發(fā)效率和質(zhì)量,可采取把 VB 可視化編程語言和 MATLAB 工具相結(jié)合的辦法,充分利用MATLAB 的運算功能和 VB 的開發(fā)界面方便的特點進行混合編程,即用 VB 來設(shè)計界面,作為主程序,調(diào)用用 MATLAB 編寫的子程序,以此開發(fā)出高質(zhì)量、高性能的工程計算軟件系統(tǒng)當(dāng)屬首選方案。下面我們介紹 VB 和 MATLAB 接口實現(xiàn)的方法介紹。3.1 VB和 MATLAB接口實現(xiàn)方法介紹3.1.1基于 ActiveX技術(shù)的接口實現(xiàn)ActiveX 是 Microsoft 提出的一組使用 COM(ComponentObjectModel,部件對象模型)使得軟件部件在網(wǎng)絡(luò)環(huán)境中進行交互的技術(shù)集,它與具體的編程語言無關(guān)。ActiveX 的特點就是使不同的軟件對象可以跨進程、跨平臺并能在網(wǎng)絡(luò)上進行交互。MATLABActiveX 自動化服務(wù)的功能主要包括在 MATLAB 工作空間執(zhí)行 MATLAB 命令,以及直接從工作空間存取矩陣等,下面列出了 MATLAB 自動化服務(wù)支持的幾個主要方法。(1)Execute(CommandasString)方法:執(zhí)行本方法將調(diào)用 MATLAB 執(zhí)行一條 Command 字符串決定的 MATLAB 命令,同時返回一條字符串表示命令的執(zhí)行情況。任何能在MATLAB 命令行窗口執(zhí)行的命令均可以被包括在 Command 字符串中。(2)GetFullMatrix 方法:該方法用來將 MATLAB 中的一個矩陣變量傳送到 VB 程序的一個一維數(shù)組或二維數(shù)組中。(3)PutFullMatrix 方法:該項方法是將 VB 程序中的一個一維數(shù)組或二維數(shù)組傳送至MATLAB 中的一個矩陣變量中。(4)VoidMinimizeCommandWindow()方法:該方法用 MATLAB 使命令行窗口最小化,具體調(diào)用如下:CallMATLABMinimizeCommandWindow()。(5)VoidMaximizeCommandWindow()方法:該方法用 MATLAB 使命令行窗口最大化,具體調(diào)用如下:CallMATLABMaximizeCommandWindow()。VB 和 MATLAB 混合編程技術(shù)研究共 37 頁 第- 19 -頁 裝訂線Microsoft 的 ActiveX 技術(shù)使 VB 在不了解應(yīng)用程序?qū)崿F(xiàn)的情況下控制自動化對象。MATLAB 實現(xiàn)了 ActiveX 服務(wù)支持,在 VB 中通過調(diào)用 MATLAB 引擎(Engine)利用ActiveX 通道與 Object.Execute 可直接使用 MATLAB 的函數(shù)庫和圖形庫。3.1.2基于 DDE技術(shù)的接口實現(xiàn)動態(tài)數(shù)據(jù)交換(DDE) ,即 DynamicDataExchange 的縮寫。它是又微軟公司提出的,是基于 WINDOWS 的消息機制,兩個 WINDOWS 應(yīng)用程序通過相互之間傳遞消息進行“對話” ,從而完成數(shù)據(jù)的請求、應(yīng)答、傳輸,這兩個程序分別被稱為“Server”和“Client” 。Server 是數(shù)據(jù)的提供者,Client 是數(shù)據(jù)的請求和接受者。通過 DDE方式建立的數(shù)據(jù)連接通道是雙向的, “Client”不但能讀取 “Server”中的數(shù)據(jù),還能對其進行修改。客戶程序啟動一個 DDE 對話,它必須識別兩種服務(wù)器定義的參數(shù) :要對話的服務(wù)名;對話的主題名。當(dāng)一個服務(wù)器程序獲得客戶程序一個會話的要求,它響應(yīng)這個要求,并建立一個 DDE 會話。服務(wù)器和主題名唯一地定義一個會話 ,在一個 DDE 會話中,客戶和服務(wù)器程序通過項目名交換數(shù)據(jù) ,項目名是數(shù)據(jù)的一個引用。MATLAB 有兩種主題,分別為 System 和 Engine。System 主題允許用戶瀏覽服務(wù)器提供的主題列表、System 主題項目和服務(wù)器端所支持的格式。 Engine 主題讓用戶通過提供一個命令來運行 MATLAB、導(dǎo)入和導(dǎo)出數(shù)據(jù),此時 MATLAB 作為服務(wù)器端使用。Engine 主題支持以下選項:EngEvalString 用于在 MATLAB 中運行一個命令;EngString Result 用來請求 DDE 執(zhí)行命令的字符串結(jié)果; EngFigureResult 用來請求 DDE 執(zhí)行命令的圖形結(jié)果。 DDE 的功能沒有 ActiveX 那么強,但是 DDE 也有其自身優(yōu)勢,就是編碼方式比較簡單,可用于實現(xiàn)一些簡單的功能。3.1.3基于 MatrixVB技術(shù)的接口實現(xiàn)MatrixVB 是由原 MathTools 公司開發(fā)的專門用于 VB 的一個 COM 組件,該組件提供了 600 多個函數(shù),包括基本的數(shù)學(xué)運算和功能強大的信號處理、線性代數(shù)、串運算及圖形圖像處理功能等,專門用來加強 VB 的矩陣運算與圖形繪制功能。MatrixVB是與 MATLAB 相獨立的軟件產(chǎn)品,可以脫離 MATLAB 運行的獨立的應(yīng)用程序。安裝后,就可以在 VB 中引用它,好處是可以避免重復(fù)性勞動,但執(zhí)行效率較低,實時運算難以實現(xiàn)。3.1.4基于動態(tài)鏈接庫 DLL方法的接口實現(xiàn)Matco
收藏