資源描述:
《vc中調(diào)用matlab的合集》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、vc里調(diào)用matlab[zz]在vc里調(diào)用matlab的mat文件或調(diào)用它的引擎,首先需要在TOOLS->options->directories->includefiles和libraryfiles里包含:c:MATLABEXTERNINCLUDE和c:MATLABEXTERNLIBWIN32MICROSOFTMSVC601.如果只調(diào)用mat數(shù)據(jù)文件,那么在工程里需要包含頭文件mat.h在Project->settings->link->object/librarymodules里添加libmx.liblibmat.lib實(shí)例:
2、1)將vc里的一個(gè)數(shù)組y[4][12],寫到一個(gè)mat文件里。MATFile*mfp;//mat文件指針mxArray*A_ptr;//矩陣指針double*A;//打開一個(gè)test.mat文件,只寫,(如果不存在就新建,否則刪除重建)mfp=matOpen("d:\Programes\matlab\work\test.mat","w");//新建一個(gè)12*4的矩陣只有實(shí)部(在matlab里矩陣都是復(fù)矩陣)A_ptr=mxCreateDoubleMatrix(12,4,mxREAL);//讓指針A指向這個(gè)矩陣A=mxGetPr(A_pt
3、r);//將y的值傳給該矩陣(A[i],i代表A所指向的矩陣的第i個(gè)元素。在VC里數(shù)組是按行排放的,在matlab里矩陣是按列排放的,)for(inti=0;i<4;i++)for(intj=0;j<12;j++)A[i*12+j]=y[i][j];//將矩陣寫到文件test內(nèi),起名為xmatPutVariable(mfp,"x",A_ptr);//關(guān)閉文件matClose(mfp);//釋放矩陣空間mxDestroyArray(A_ptr);實(shí)例:2)將一個(gè)mat文件,讀到vc里的一個(gè)數(shù)組y[4][12]。MATFile*mfp;mxArra
4、y*A_ptr;double*A;mfp=matOpen("d:\Programes\matlab\work\test.mat","r");//如果既要讀又要寫就用"u"if(mfp==NULL)return;A_ptr=matGetVariable(mfp,"x",);A=mxGetPr(A_ptr);for(inti=0;i<4;i++)for(intj=0;j<12;j++)y[i][j]=A[i*12+j];matClose(mfp);mxDestroyArray(A_ptr);2.如果要調(diào)用它的引擎,那么在工程里需要包含頭文件
5、engine.h在Project->settings->link->object/librarymodules里添加libmx.liblibmat.liblibeng.lib實(shí)例://將剛才y數(shù)組的一行畫出來Engine*ep;mxArray*A_ptr;double*A;A_ptr=mxCreateDoubleMatrix(12,1,mxREAL);A=mxGetPr(A_ptr);//打開matlab引擎ep=engOpen("D:\Programes\matlab\bin\win32\matlab");for(intj=0;j<
6、12;j++)A[j]=y[0][j];//將矩陣A_ptr起名為y放進(jìn)matlab的數(shù)據(jù)區(qū)engPutVariable(ep,"y",A_ptr);//用指令x=0:1:11新建一個(gè)x矩陣//函數(shù)engEvalString(Engine*ep,char*string)里的參數(shù)string就相當(dāng)于在matlab的命令窗口里打的命令。engEvalString(ep,"x=0:1:11");//調(diào)用plot(x,y)畫圖engEvalString(ep,"plot(x,y)");mxDestroyArray(A_ptr);//關(guān)閉引擎,如果后面的
7、程序繼續(xù)要用就不用關(guān)了engClose(ep);上面所用到的函數(shù)都可以在MATLABEXTERNINCLUDE\mat.h和engine.h里看到其聲明4?VC++環(huán)境下的Matlab開發(fā)????從上面的轉(zhuǎn)換可以看出,利用Matlab編譯器命令生成的C/C++文件,實(shí)際上其函數(shù)的輸入輸出參數(shù)為mwArray對(duì)象。那么可以考慮直接在VC++或其它C++編譯器中利用Matlab的庫函數(shù)來完成簡(jiǎn)單計(jì)算任務(wù)。????Matlab?C/C++數(shù)學(xué)函數(shù)庫中最基本的數(shù)據(jù)類型為矩陣對(duì)象,即mwArray類對(duì)象,幾乎所有的庫函數(shù)均以它們作為計(jì)算和處理的對(duì)象
8、,掌握mwArray對(duì)象的操作,對(duì)于學(xué)習(xí)Matlab?C/C++數(shù)學(xué)庫的使用是至關(guān)重要的。????Matlab?C/C++數(shù)學(xué)庫通過類mwArray對(duì)