999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MATLAB中調用VC混合編程方法的研究與實現(xiàn)

2010-09-19 08:41:06宗節(jié)保成鴻飛段柳云
電子設計工程 2010年8期
關鍵詞:程序

宗節(jié)保,尹 忠,成鴻飛,段柳云,王 瑩

(武漢大學 電子信息學院,湖北 武漢 430072)

MATLAB是Mathworks公司推出的一款功能強大的數(shù)學軟件,它集數(shù)值分析、矩陣計算、信號處理和圖形顯示于一身,包含大量高度集成的函數(shù)可供調用,命令語句功能強大,為科學研究、工程設計及眾多學科領域提供了一種簡潔、高效的編程工具,并在圖像處理、控制設計、信號檢測、金融建模設計等領域得到廣泛應用[1]。但是MATLAB使用的是解釋性語言,這限制了它的執(zhí)行速度,不利于開發(fā)各種應用軟件[2]。相比之下,VC是Windows平臺下主要的應用程序開發(fā)環(huán)境之一,它能方便實現(xiàn)軟件開發(fā),開發(fā)出的系統(tǒng)具有界面友好、執(zhí)行速度快、易維護和升級等優(yōu)點[3]。同時,VC因其與操作系統(tǒng)和底層硬件交換的效率而在高級語言中得到廣泛應用。

因此,如何實現(xiàn)VC和MATLAB的混合編程來提高代碼運行效率就成了一個研究方向。一般情況下大多數(shù)應用側重于通過在VC中利用MATLAB強大的數(shù)學運算功能[4-5],而在MATLAB中利用VC進行軟件開發(fā)的例子比較少。然而利用MATLAB語言制作軟件的過程中,經(jīng)常會碰到一些MATLAB程序無法解決的問題,此時如果通過混合編程調用VC/VC++,這些問題便可迎刃而解。這種混合編程方法的運用,不僅能夠更好地發(fā)揮MATLAB強大的功能,還能縮短軟件開發(fā)周期,因而在仿真技術研究中具有重大實用價值。

本文將具體論述在MATLAB中調用VC的混合編程方法并將其應用于MATLAB的自動索引中從而極其方便地打開chm格式幫助文檔并自動定位到文檔的相應位置。

1 MATLAB中調用VC的混合編程方法

在MATLAB平臺上調用VC一般是因為使用MATLAB語言來實現(xiàn)特定算法功能代碼復雜、運行效率低下。這時候利用VC與系統(tǒng)和底層硬件交換效率及其強大的調試功能可以編寫高效的算法程序,然后通過將VC上的源程序編譯成可供MATLAB使用的庫文件或MEX文件無疑很好地發(fā)揚了兩種語言的優(yōu)勢。

VC和MATLAB混合編程的方法有很多種,主要分為以下幾種:1)通過 MATLAB Engine方式;2)直接調用 MATLAB的VC數(shù)學函數(shù)庫;3)使用matcom工具;4)使用MATLAB的combuilde工具;5) 用 MATLAB自帶的 MATLAB Compiler[6]。在這5種方法當中,前4種一般用在VC中調用MATLAB函數(shù)的場合,第5種二者皆可并且簡單易行,由于本文中是要實現(xiàn)在MATLAB中調用VC函數(shù),故利用Compiler把VC編寫的源程序即cpp程序編譯成MEX文件供編寫M文件時調用。

1.1 MEX文件執(zhí)行流程

一個MEX文件的源程序是包括入口程序和算法程序的。當對C語言的MEX文件進行編譯時,MATLAB首先從命令行獲取輸入矩陣,并賦給入口程序的輸入?yún)?shù)指針組,入口程序對輸入?yún)?shù)進行計算后創(chuàng)建輸出矩陣,并將其賦給入口程序的輸出參數(shù)指針組,最后使用入口程序的輸入?yún)?shù)和輸出參數(shù)作為算法程序的參數(shù)調用算法程序[7]。

下面以 MATLAB自帶的一個 c-mex文件為例來說明MEX文件的執(zhí)行流程。文件的源程序為timestwo.c,該程序實現(xiàn)一個數(shù)據(jù)兩倍乘法過程。它有一個輸入?yún)?shù)和一個輸出參數(shù)。這里用到mex.h中定義的兩個函數(shù):mexGet()函數(shù)用于返回句柄的屬性;mexCreat()用于創(chuàng)建矩陣。 圖(1)以[y]=f(x)為例完整地表明了文件輸入數(shù)據(jù),算法程序調用和計算結果返回的過程。

1.2 利用MEX文件實現(xiàn)MATLAB下調用VC

MATLAB中調用VC的混合編程方法總體實現(xiàn)過程如圖2所示。

1.2.1 MATLAB編譯環(huán)境的設置

在MATLAB與VC混合編程之前,必須先對MATLAB的編譯應用程序MEX和編譯器mbuild進行正確的設置。

對MATLAB編譯應用程序MEX的設置:Mex-setup。再根據(jù)系統(tǒng)提示進行選擇路徑和編譯器。對MATLAB編譯器mbuild的設置:Mbuild-setup。同理,按后面提示結合個人需要選擇即可。

1.2.2 以混合編程方式創(chuàng)建cpp源文件

為了能夠在MATLAB中調用VC,必須要有接口函數(shù)來起到“橋梁”的作用,在MATLAB中mexFunction就是這樣一個函數(shù),它同時也是MEX文件的一個專用接口函數(shù)。

而mexFunction函數(shù)則包含在頭文件“mex.h”中,混合編程時需要用到這個接口函數(shù),它含有4個參數(shù),其中nlhs表示輸出參數(shù)個數(shù),nrhs表示輸入?yún)?shù)個數(shù),plhs是一個數(shù)組,其內容為指針且指向所有的輸入?yún)?shù),該指針指向數(shù)據(jù)類型mxArray,prhs是一個指向輸出參數(shù)的指針數(shù)組,值得注意的是prhs是const的指針數(shù)組,即不能改變其指向內容。

1.2.3 mex文件的生成與調用

cpp文件是C++中的源文件,在MATLAB中無法直接調用或運行,只有通過轉化為MEX文件后才能在MATLAB中調用它??梢酝ㄟ^在MATLAB命令窗口中直接輸入MEX指令即可將相應的cpp源文件編譯成MEX文件。

在MATLAB中生成的MEX文件名同時也是調用時的函數(shù)名,一般情況下在該調用函數(shù)時需要輸入一些混合編程時已定義好的參數(shù)。這樣在編寫M文件時可以直接調用相應的MEX類型函數(shù)了。

2 MATLAB下文檔自動索引的實現(xiàn)

給出利用MATLAB中調用VC的混合編程方法來具體實現(xiàn)在MATLAB中文檔的自動索引。目前MATLAB尚不提供在其GUI控件的回調函數(shù)中直接編寫代碼定位到chm格式文檔的方法。通過VC和MATLAB的混合編程,利用VC編寫源程序并編譯成MEX文件,這樣在GUI控件的回調函數(shù)就可以通過 mexzdsy(’hh.exe ms-its:URL’)語句來直接定位到相應的文檔頁面,這無疑提高了編程效率,方便了用戶使用。

VC源文件名為mexzdsy.cpp,核心代碼如下:

在該例中WinExec函數(shù)包含在頭文件“Windows.h”中,它也正是所需的VC中的函數(shù),為了將mexzdsy.cpp這一文件轉化生成MEX文件,需要在MATLAB的命令窗口中輸入“mex mexzdsy.cpp”,則在當前工作目錄下會生成一個名為“mexzdsy.mexw32”的文件,這一文件便是所需的MEX文件。

這樣,可以在MATLAB的M文件編寫中通過mexzdsy(’hh.exe ms-its:索引頁地址’)這一形式語句來實現(xiàn)自動索引。其中hh.exe是Windows自帶的系統(tǒng)文件,它用于打開chm格式的幫助文檔,“ms-its”是一種協(xié)議,它定義了如何打開htm或html格式的文檔,而索引頁地址就是在幫助文檔中顯示的那一頁的URL。

3 教學軟件中的具體應用實例

利用MATLAB中調用VC的混合編程方法,在基于MATLAB程序制作的教學軟件中實現(xiàn)了幫助文檔的自動索引。幫助文檔help.chm放在help文件夾中,例如如圖3所示的軟件界面。

點擊按鈕“動目標顯示(MTI)”便會自動打開如圖4所示的幫助文檔并索引到指定頁。

在基于MATLAB語言制作的軟件中,如果單純的利用MATLAB語言只能打開該幫助文檔但無法索引到指定頁,而通過混合編程在MATLAB中調用VC函數(shù)WinExec則有效的解決了這一問題。

4 結束語

從上面的分析中可以看出要實現(xiàn)在MATLAB中調用VC語言函數(shù),關鍵是要掌握MATLAB中的接口函數(shù)和一些重要VC函數(shù)的用法,寫出符合要求的VC源程序。VC和MATLAB混合編程可以充分發(fā)揮兩種軟件的優(yōu)點,減少了代碼重用,提高了程序運行速度。通過將VC和MATLAB混合編程引入到MATLAB文檔的自動索引中彌補了MATLAB在這方面的不足之處,方便了用戶的使用。隨著MATLAB版本的升級,Mathworks公司有意加強了MATLAB在與其他高級語言混合編程方面的功能,相信這一混合編程的優(yōu)勢將應用于更廣闊的領域。

[1]潘大夫,汪渤,周志強.Matlab與C/C++混合編程技術研究[J].計算機工程與設計,2009,30(2):200-210.

PAN Da-fu,WANG Bo,ZHOU Zhi-qiang.Technical research of hybrid programming by MATLAB and C/C++[J].Computer Engineering and Design.2009,30(2):200-210.

[2]潘孝勇,姜偉,楊繼隆.Visual C++與MATLAB混合編程[J].計算機仿真,2004,21(3):140-143.

PAN Xiao-yong,JIANG Wei,YANG Ji-long.Hybrid programming by Visual C++ and MATLAB[J].Computer Simulation,2004,21(3):140-143.

[3]王周益,劉繼興,柳長安.VC++與MATLAB混合編程研究及開發(fā)實例[J].計算機應用研究,2006(5):154-155.

WANG Zhou-yi,LIU Ji-xing,LIU Chang-an.Research and development example of hybrid programming by VC++ and MATLAB[J].Application Research of Computers,2006 (5):154-155.

[4]謝永華,傅德勝.VC++和Matlab混合編程在圖像處理中的應用[J].計算機應用與軟件,2005,22(2):120-121.

XIE Yong-hua,F(xiàn)U De-sheng.Application of hybrid programming by VC++ and MATLAB in image processing[J].Computer Applications and Software,2005,22(2):120-121.

[5]趙志強,劉志成.VC++與Matlab混合編程技術應用分析[J].實驗技術與管理,2009,26(1):99-101.

ZHAO Zhi-qiang,LIU Zhi-cheng.Application analysis of hybrid programming by VC++ and MATLAB[J].Experimental Technology and Management,2009,26(1):99-101.

[6]楊波,亓波.精通Matlab7.0混合編程[M].北京:電子工業(yè)出版社,2006.

[7]孫慧,李莉.Visual C++和MATLAB混合編程實現(xiàn)圖像三維重建[J].微計算機信息.2007,23(18):294-296.

SUN Hui,LI Li.Implement of image three-dimensional reconstruction with hybrid programming by Visual C++ and MATLAB[J].Microcomputer Information,2007,23(18):294-296.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創(chuàng)衛(wèi)暗訪程序有待改進
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 99久久精品视香蕉蕉| 成人国产精品2021| 国产精品一区二区不卡的视频| 无码福利视频| 制服无码网站| 国产又黄又硬又粗| 婷婷伊人久久| 天天操天天噜| 久久国产免费观看| 国产经典三级在线| 久久精品一品道久久精品| 人人看人人鲁狠狠高清| 国产亚洲精久久久久久无码AV| 国内精品视频区在线2021| 亚洲国产成人久久77| 国产一区二区视频在线| 一本一本大道香蕉久在线播放| 黄色网址免费在线| 玖玖免费视频在线观看| 国产成人AV男人的天堂| a网站在线观看| 男女性色大片免费网站| 天堂成人av| 欧美日韩成人| 国产欧美网站| 99在线视频免费| 国产精品成人一区二区不卡| 亚洲男人的天堂视频| 无码一区二区三区视频在线播放| 国产男女免费完整版视频| 全部免费特黄特色大片视频| 538国产在线| 国产精品成人免费视频99| 99青青青精品视频在线| 色色中文字幕| 日本三级欧美三级| 日本人妻一区二区三区不卡影院 | 亚洲成A人V欧美综合| 色九九视频| 在线综合亚洲欧美网站| 久久久久青草线综合超碰| 制服丝袜 91视频| 人妻丰满熟妇av五码区| 欧美h在线观看| 青青草91视频| 日本欧美成人免费| 国产在线麻豆波多野结衣| 色综合天天视频在线观看| 日本亚洲最大的色成网站www| 中国黄色一级视频| 亚洲Va中文字幕久久一区| 在线欧美一区| 精品人妻AV区| 一本一道波多野结衣av黑人在线| 亚洲日韩精品无码专区97| 精品国产一区91在线| 欧美精品啪啪一区二区三区| 亚洲欧美不卡| 伊人成人在线视频| 一级全免费视频播放| 国产成人久久777777| 99热这里只有精品久久免费| 欧美一级在线| 亚洲男人在线天堂| 免费又黄又爽又猛大片午夜| 人妻中文久热无码丝袜| 亚洲AV一二三区无码AV蜜桃| 99ri精品视频在线观看播放| igao国产精品| 一区二区三区四区日韩| 毛片视频网址| 宅男噜噜噜66国产在线观看| 久久免费视频6| 国产高清毛片| 男女性午夜福利网站| 制服丝袜一区二区三区在线| 欧美亚洲国产日韩电影在线| 丁香综合在线| 欧美精品亚洲日韩a| 亚洲欧美日韩久久精品| 综合网天天| 国产毛片片精品天天看视频|