国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

MATLAB與VC++混合編程的研究及應(yīng)用

2013-12-29 00:00:00馬蕾
電腦知識與技術(shù) 2013年10期

摘要:介紹了三種實用易行的MATLAB與VC++混合編程方式,即利用MATLAB的MCC編譯器,使用MATCOM軟件轉(zhuǎn)化M文件,使用MATLAB的COM Builder工具制作COM組件。針對具體程序分別應(yīng)用三種方法來實現(xiàn),對每種方法介紹了詳細(xì)步驟。對三種方法進(jìn)行了分析比較,總結(jié)了各自的優(yōu)缺點,實現(xiàn)了MATLAB出色的圖形處理功能和數(shù)值計算能力與VC++強(qiáng)大編程能力的結(jié)合。

關(guān)鍵詞:MATLAB;VC++;混合編程

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)10-2353-03

MATLAB是適合多學(xué)科,多種工作平臺的功能強(qiáng)大的大型數(shù)值計算和系統(tǒng)分析軟件。MATLAB將數(shù)值分析、矩陣計算、信號處理和圖形顯示相結(jié)合,包含了大量高度集成的函數(shù),為科學(xué)研究、工程設(shè)計及眾多學(xué)科領(lǐng)域提供了一種簡潔、高效的編程工具,在數(shù)值分析、科學(xué)計算、算法開發(fā)、建模和仿真等方面具有獨特優(yōu)勢[1]。但是MATLAB使用的是解釋性語言,限制了自身的執(zhí)行速度;程序的執(zhí)行限制與MATLAB自身的運行環(huán)境,不利于應(yīng)用程序的開發(fā);GUI功能較差。

VC++是強(qiáng)大的windows應(yīng)用程序開發(fā)工具,它提供了高度集成的工具集和可視化集成的編程環(huán)境,包括了Microsoft的代碼優(yōu)化技術(shù),極大提高了應(yīng)用程序的設(shè)計效率,還提供了復(fù)雜的資源編輯器,擁有強(qiáng)大的GUI功能[2]。

因此,實現(xiàn)MATLAB與VC++等可視化程序設(shè)計語言的混合編程,提高程序的執(zhí)行速度,美化應(yīng)用程序界面,脫離MATLAB環(huán)境,發(fā)布獨立的應(yīng)用程序,同時利用MATLAB在數(shù)值分析、矩陣計算、信號處理和圖形顯示等方面的強(qiáng)大功能,具有重要的意義。

1 MATLAB與VC++混合編程方法

MATLAB與VC++有多種接口方法,但是一些常見方法難以實現(xiàn),執(zhí)行效率低,如MATLAB Engine、直接調(diào)用MATLAB的C/C++數(shù)學(xué)函數(shù)庫等。該文介紹三種只要在VC++平臺下調(diào)用,不需要編寫大量語句,更加適用于實際應(yīng)用和軟件開發(fā)的接口方法:利用MATLAB自帶編譯器MCC;使用MATCOM軟件轉(zhuǎn)換M文件;以及利用COM Builder工具制作COM組件。

1.1 利用MATLAB自帶編譯器MCC

MCC是MATLAB自帶的優(yōu)化編譯器,作用是將m文件轉(zhuǎn)化成C/C++代碼,通過MCC,可以將MATLAB數(shù)學(xué)庫、圖形庫和界面的MATLAB程序轉(zhuǎn)化為DLL動態(tài)鏈接庫、C/C++文件、EXE應(yīng)用程序等一系列文件。MCC實現(xiàn)MATLAB與VC++混合編程的步驟為[3-4]。

1.2使用MATCOM轉(zhuǎn)換M文件

MATCOM是Mathworks公司推出的由MATLAB到C++的編譯開發(fā)軟件平臺。MATCOM可以把M文件翻譯成C++源文件,并編譯為脫離MATLAB環(huán)境可獨立運行的程序。它的編譯環(huán)境為MIDEVA。通過MATCOM鏈接MATLAB的M文件有以下三種方式:

1)將M文件直接轉(zhuǎn)換為C/C++,然后添加至MSVC工程中;

2)利用MATCOM生成獨立執(zhí)行的EXE文件,但由于VC和MATLAB之間不能交互,通用性差,僅適用于在VC中調(diào)用MATLAB實現(xiàn)圖形顯示。

3)實現(xiàn)在Visual C++6.0環(huán)境中直接對M文件進(jìn)行編譯,這種方法通過使用Visual MATCOM工具條,在脫離了MATLAB環(huán)境條件下,實現(xiàn)了VC++對M文件的調(diào)用,大大方便了應(yīng)用程序的開發(fā)。

本文采用第三種—利用MATCOM直接在VC++中對M文件進(jìn)行編譯的方式,實現(xiàn)上述繪制正弦函數(shù)圖形的程序[5]。

1)安裝MATCOM4.5,然后在VC++中設(shè)置MATCOM的調(diào)用環(huán)境,并生成一個Visual MATCOM工具條。

編譯執(zhí)行后,可通過點擊對話框上的按鈕,利用COM組件的方法,進(jìn)行正弦圖像的繪制,完成MATLAB與VC++的混合編程。

2 結(jié)束語

通過上述三種方法的分析和實例應(yīng)用,可以發(fā)現(xiàn)上述三種方式都不需要在VC++平臺下編寫大量語句,將程序的處理部分,全部用M文件完成,VC++中只需要簡單的調(diào)用即可,相對于其他的混合編程方法,如通過MATLAB Engine、直接調(diào)用MATLAB的C/C++數(shù)學(xué)函數(shù)庫等執(zhí)行效率低、需要用戶在VC++下大量編寫代碼的方式,有著顯著的優(yōu)點,更加適用于實際應(yīng)用和軟件開發(fā)。這三種MATLAB與VC++的混合編程方法又有各自的特點:

1)利用MATLAB自帶編譯器MCC,將M文件轉(zhuǎn)換成C/C++文件,除了上述優(yōu)點外仍有很多限制,如:不能轉(zhuǎn)換腳本M文件,只能轉(zhuǎn)換M函數(shù);不能使用MATLAB對象;不能用input或者eval操作MATLAB空間變量;不能動態(tài)地命名變量,然后用load或者save命令來操作;不能處理具有嵌套調(diào)用其他M文件的M文件;不能使用MATLAB內(nèi)聯(lián)函數(shù)等。

2)使用MATCOM轉(zhuǎn)換M文件,相比其它兩種方法,它具有轉(zhuǎn)換過程簡單,容易實現(xiàn);不僅可以轉(zhuǎn)換獨立的腳本文件,也可以轉(zhuǎn)換嵌套腳本文件;設(shè)置環(huán)境后,可以使用Matlab的部分工具箱函數(shù)等優(yōu)點。但是,它仍舊存在以下不足:第一,需要安裝MATCOM, 為程序的開發(fā)增加了依賴性;第二, 對struct等類的支持有缺陷,對class數(shù)據(jù)類型、部分繪圖語句無法實現(xiàn)或得不到準(zhǔn)確圖象,尤其是三維圖象; 第三,利用MATCOM方式,在VC++編譯過程中,程序很可能會發(fā)生不正常運行。

3)利用COM Builder工具制作COM組件,這種方法增強(qiáng)了對圖形的支持和程序的通用性,具有較高的運行效率,但是不支持腳本文件。因此在程序較大、調(diào)用工具箱函數(shù)或調(diào)用函數(shù)較多時推薦使用。

MATLAB與VC++的混合編程技術(shù),既充分滿足了對數(shù)值分析、矩陣運算和圖形顯示的要求,又降低了軟件開發(fā)的難度,提高了系統(tǒng)的執(zhí)行速率。但根據(jù)使用情況的不同,應(yīng)選擇不同的混合編程方法。

參考文獻(xiàn):

[1] Duane,Bruce.精通MATLAB7[M]. 朱仁峰,譯.北京:清華大學(xué)出版社,2010.

[2] 魏朗,陳濤.Visual C++程序設(shè)計攻略教程[M]. 西安:西安電子科技大學(xué)出版社,2008.

[3] 蘇金明,劉宏,劉波.MATLAB高級編程[M]. 北京:電子工業(yè)出版社:2005,215-228.

[4] Math Works. Matlab complier userguide:version2[M].New Mexico:MathWorks,1998.

[5] 牟彧清,王汝霖,李國新.MATLAB 與VC 接口技術(shù)的研究[J].微計算機(jī)信息,2006,22(7-3):275-277.

[6] 王曉春,曹鳴,羅永新.基于COM 的VC 與Matlab的混合編程技術(shù)[J].自動化技術(shù),2004(19):16-18.

南汇区| 望谟县| 政和县| 铜鼓县| 特克斯县| 宁河县| 井冈山市| 苏尼特右旗| 古浪县| 阿鲁科尔沁旗| 西充县| 景宁| 襄汾县| 深水埗区| 靖州| 玛沁县| 榆中县| 台北市| 临泽县| 北海市| 平江县| 沈阳市| 筠连县| 即墨市| 锦州市| 奇台县| 长沙县| 新源县| 伊川县| 永宁县| 肇东市| 营山县| 哈密市| 体育| 乐业县| 舟曲县| 滦平县| 赤城县| 黔南| 巴东县| 濉溪县|