一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

matlab 2008與VS2008的混合編程

 ?野卐狼? 2011-06-02
matlab 2008與VS2008的混合編程


Matlab 2008開始才能支持VS2008,所以這里寫一個例子介紹如何將二者結(jié)合,生成 .dll文件進行混合編程。

   首先,為matlab安裝mexmbuild并配置好環(huán)境變量。

   下面給出一個具體實例進行講解:

    matlab中寫一個簡單inverse.m實現(xiàn)求矩陣逆:

function y=inverse(a,NUM)

%NUM a維數(shù),這里沒有什么實際意義

y=inv(a);

針對上面例子創(chuàng)建狀態(tài)鏈接庫(在matlab中使用mcc命令):

mcc -C -W cpplib:libinverse -T link:lib inverse.m

注意1這里加了一個-C,這是因為在matlab2008中使用mcc -W cpplib:libinverse -T link:lib inverse.m.時候,只會生成.lib .h .dll文件(注意,這四個文件默認生成位置是:桌面。。\My Documents\MATLAB文件夾中),但并不會生成.ctf文件,那是因為matlab2008默認地把ctf文件放到別文件中了,所以沒有單獨生成(你可以用mcc ?查一下),如果想要單獨生成ctf文件,可以在里面加上-C這個選項,如上所示。

接下來,在VS2008中建立一個C++工程Test_matlab,使其調(diào)用這個.dll。把上面mcc命令生成.lib .h .dll .ctf文件放到Test_matlab工程中,然后在VS中配置工程,需要配置以下幾項:

打開project->Test_matlab_properties->C/C++->general->Addational Include Directories, MATLAB提供include路徑加到VC++頭文件搜索路 徑加入。

打開project->Test_matlab_properties->Linker->general->Addational Library Directories, 把相應(yīng)lib所在目錄加入。

打開project->Test_matlab_properties->Linker->Input->Addational Dependencies .lib mclmcrrt.lib加入,中間用空格。

    最后,把.h添加到VC++程序中,其主程序如下(請轉(zhuǎn)II):

   注意2有可能出現(xiàn)'mclInitializeApplication_proxy': identifier not found,錯誤

   這是因為頭文件相對位置不對,把調(diào)用matlabdriver頭文件放在#include "mclcppclass.h"前邊或者不用#include "mclcppclass.h",因為它就包含在調(diào)用matlabdriver頭文件中。


// Test_matlab.cpp : Defines the entry point for the console application.

//程序中包括我做一些其它測試,例如內(nèi)存寫順序,如何傳遞參數(shù)等等問題

//程序功能:VC++調(diào)用matlabinv函數(shù),實現(xiàn)NUM*NUM矩陣求逆

#include "libinverse.h" // DLL 頭文件

#include "iostream"

//#include "mclmcr.h" // mxArray 類型聲明

using namespace std;

int main()

{

// 初始化程序

       int i,j;

       if( ! mclInitializeApplication(NULL,0) )

       {

              fprintf(stderr, "Could not initialize the application.\n");

             exit(1);

       }

// 初始化庫

       if (! libinverseInitialize() )

       {

              fprintf(stderr,"Could not initialize the library.\n");

              exit(1);

       }

       printf("game over!\n");

      int NUM=10;

       double **xx=new double*[NUM];

       xx[0]=new double[NUM*NUM];

       for(i=0;i<NUM;i++)

       {

            xx[i]=xx[0]+i*NUM;

       }

       double *x=new double[NUM*NUM];

       for(i=0;i<NUM;i++)

              for(j=0;j<NUM;j++)

              {

                     if(i==j)

                            xx[i][j]=2;

                     else

                            xx[i][j]=0;

              }

       for( i=0;i<NUM;i++)

              for( j=0;j<NUM;j++)

              {

                     x[i*NUM+j]=xx[j][i];                 //matlab一列一列地寫

              }

     mwArray a(NUM,NUM,mxDOUBLE_CLASS);//a用于存儲待計算矩陣matlab語言中從a(1,1)開始計數(shù)

       for(int i=1;i<=NUM;i++)

              for(int j=1;j<=NUM;j++)

                     a(i,j) = xx[i-1][j-1];

       mwArray y(NUM,NUM,mxDOUBLE_CLASS);//y用于輸出最后得到矩陣

       mwArray n(1,1,mxINT32_CLASS);     //n是一個一維矩陣,存儲NUM

       n(1,1) = NUM;

       inverse(1,y,a,n);

       for(int i=0;i<NUM;i++)

       {

              for(int j=0;j<NUM;j++)

              {

                     cout<<y(i+1,j+1)<<' ';

              }

              cout<<endl;

       }

    libinverseTerminate();                                //關(guān)閉庫和程序

    mclTerminateApplication();

       delete[] x;

       delete[] xx[0];

       delete[] xx;

}

編譯運行就可以了。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    一区二区日韩欧美精品| 中日韩美一级特黄大片| 国产精品二区三区免费播放心| 色一情一乱一区二区三区码| 午夜久久久精品国产精品| 日本精品中文字幕人妻| 日韩高清毛片免费观看| 精品国模一区二区三区欧美| 精品久久少妇激情视频| 亚洲天堂久久精品成人| 中文文精品字幕一区二区| 亚洲午夜精品视频观看| 精品日韩视频在线观看| 国产精品一区二区高潮| 精品国模一区二区三区欧美| 亚洲a码一区二区三区| 中文字幕乱码亚洲三区| 亚洲性生活一区二区三区| 亚洲中文字幕亲近伦片| 日韩一本不卡在线观看| 可以在线看的欧美黄片| 久久机热频这里只精品| 国产精品一区二区成人在线| 99久只有精品免费视频播放 | 国产精品美女午夜福利| 国产av熟女一区二区三区四区 | 亚洲国产av精品一区二区| 久久综合九色综合欧美| 亚洲中文字幕在线观看黑人| 隔壁的日本人妻中文字幕版| 黑鬼糟蹋少妇资源在线观看| 国产日韩综合一区在线观看| 99亚洲综合精品成人网色播| 欧美一级片日韩一级片| 老熟妇乱视频一区二区| 久久99午夜福利视频| 亚洲中文字幕视频在线播放 | 日韩欧美综合中文字幕| 日韩在线视频精品中文字幕| 日韩免费成人福利在线| 亚洲熟妇熟女久久精品|