課題:VC與Matlab混合編程.doc

課題:VC與Matlab混合編程.doc

ID:59518251

大?。?2.00 KB

頁數(shù):8頁

時(shí)間:2020-11-05

課題:VC與Matlab混合編程.doc_第1頁
課題:VC與Matlab混合編程.doc_第2頁
課題:VC與Matlab混合編程.doc_第3頁
課題:VC與Matlab混合編程.doc_第4頁
課題:VC與Matlab混合編程.doc_第5頁
資源描述:

《課題:VC與Matlab混合編程.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、VC與Matlab混合編程本文主要介紹VC與Matlab混合編程的兩種方法,并詳細(xì)介紹了VC向Matlab傳遞復(fù)雜數(shù)據(jù):結(jié)構(gòu)體的方法,有詳細(xì)代碼說明。Matlab?主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境,但由于Matlab開發(fā)平臺(tái)上開發(fā)的程序不能脫離Matlab運(yùn)行環(huán)境,因而在處理一些實(shí)際應(yīng)用問題時(shí)顯得靈活性不足,而VC++則在一定程度上能夠彌補(bǔ)這一漏洞,因此,將二者結(jié)合共用,各獻(xiàn)其長,可以為科研工作和工程開發(fā)提供更為強(qiáng)大的技術(shù)支持。Matlab作為控制系統(tǒng)設(shè)計(jì)的一種通用工具,它可以很方便的和VC進(jìn)行連接。一般而言,Matlab與VC混合編程的實(shí)現(xiàn)方法有很多種,這里主要介紹

2、以下兩種:1.??VC調(diào)用Matlab?Engine的方式:MatlabEngine是一組Matlab提供的接口函數(shù),支持C/C++語言,MatlabEngine采用C/S(客戶機(jī)/服務(wù)器)模式,Matlab作為后臺(tái)服務(wù)器,而C/C++程序作為前臺(tái)客戶機(jī),向MatlabEngine傳遞執(zhí)行命令和數(shù)據(jù)信息,從MatlabEngine接收?qǐng)?zhí)行結(jié)果。用戶可以在前臺(tái)應(yīng)用程序中調(diào)用這些接口函數(shù),實(shí)現(xiàn)對(duì)MatlabEngine的控制。采用這種方法幾乎能利用Matlab全部功能,但是需要在機(jī)器上安裝Matlab軟件,缺點(diǎn)是執(zhí)行效率較低。下面簡(jiǎn)單介紹下這種方式的實(shí)現(xiàn)步驟:1.1API接口介紹先來介紹一組Mat

3、lab提供的引擎API接口:(僅作簡(jiǎn)單功能介紹,詳細(xì)參數(shù)說明請(qǐng)參考Matlab幫助)Engine*engOpen(constchar*startcmd)啟動(dòng)Matlab引擎intengClose(Engine*ep)?關(guān)閉Matlab引擎int?engEvalString(Engine*ep,?constchar*string)執(zhí)行Matlab表達(dá)式mxArray*engGetArray(Engine*ep,constchar*name)獲取一個(gè)變量數(shù)組的值int?engPutArray(engine*ep,constmxArray*mp)設(shè)置一個(gè)變量數(shù)組的值intengPutVariable

4、(Engine*ep,constchar*name,constmxArray*pm)同上mxArray*engGetVariable(Engine*ep,constchar*name)獲取一個(gè)變量intengOutputBuffer(Engine*eP,char*p,intn)獲取輸出字符串?1.2???VC環(huán)境配置要想在VC集成環(huán)境下調(diào)用Matlab引擎實(shí)現(xiàn)VC和Matlab的混合編程,一般需要經(jīng)過以下幾個(gè)必要的步驟:(以下以Matlab2008a和VS2005版本為例)(1)添加include路徑:將“externinclude”(在Matlab的安裝路徑下)路勁添加到VC編譯器的in

5、clude下(2)添加lib路徑:將“externlibwin32microsoft”?(在Matlab的安裝路徑下)?路徑添加到VC編譯器的lib下(3)加載lib:需要加載至少libmx.lib、libmat.lib、libeng.lib三個(gè)庫(4)include頭文件:在要使用?engine?函數(shù)的地方包含engine.h頭文件?1.3???引擎調(diào)用接下來就可以在VC中調(diào)用Matlab引擎了,簡(jiǎn)單的示例代碼如下:#include"engine.h"#pragmacomment(lib,"libeng.lib")#pragmacomment(lib,"libmx.lib")#pra

6、gmacomment(lib,"libmat.lib")voidTestDeno(){Engine*pEng=NULL;if(!(pEng=engOpen(NULL))){printf("Openmatlabengingfail!");return;}//callEngineplotA*sin(t)+BA=2B=1mxArray*A=NULL;doubleinit=2;A=mxCreateDoubleMatrix(1,1,mxREAL);memcpy((void*)mxGetPr(A),(void*)&init,sizeof(double));engPutVariable(pEng,"A",A

7、);init=1;memcpy((void*)mxGetPr(A),(void*)&init,sizeof(double));engPutVariable(pEng,"B",A);mxDestroyArray(A);Sleep(3*60*1000);engEvalString(pEng,"t=0:0.2:7;plot(t,A*sin(t)+B);");if(NULL!=pEng){engClose

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。