一、首先要熟悉matlab所附帶的c語言api
1、定義mexfunction函式,mexfunction的定義法唯一: 它只能是如下形式:
void mexfunction( int nlhs, mxarray *plhs,int nrhs, const mxarray *prhs )
其名稱和引數型別不許有任何改變,在mexfunciton函式中可以呼叫你剛定義好的c++程式。
2、matfile matopen(const char *filename, const char mode)——開啟/建立
3、matfile matopen(const char *filename, const char mode)——開啟/建立乙個mat檔案;
4、int matclose(matfile *pmf)——關閉乙個mat檔案;
5、mxarray *mxcreatedoublematrix(int m, int n, mxcomplexity flag) ——建立乙個(復)雙精度矩陣;
6、`mxarray *mxcreatesparse(int m, int n, int nzmax,mxcomplexity flag) ——建立乙個稀疏矩陣;
7、mxarray *matgetnextarray(matfile *pmf)——獲得mat檔案裡面下乙個矩陣;
8、const char *mxgetname(const mxarray *pa)——獲得矩陣pa的名稱;
9、void mxsetname(mxarray *pa,const char *s)——為矩陣pa設定乙個名稱;
10、int mxgetm(const mxarray *pa)——獲得矩陣pa的總行數;
11、int mxgetn(const mxarray *pa)——獲得矩陣pa的總列數;
12、double *mxgetpr(const mxarray *pa)——獲得矩陣pa的pr指標;
13、int *mxgetir(const mxarray *pa)——獲得稀疏矩陣pa的ir指標;
14、int *mxgetjc(const mxarray *pa)——獲得稀疏矩陣pa的jc指標;
15、int matputarray(matfile * pmf, const mxarray * pa) ——把矩陣pa儲存入mat檔案pmaf;
16、void mxdestroyarray(mxarray *pa)——釋放矩陣pa(把它從記憶體中撤銷);
二、例子(用c++模擬matlab矩陣相加add.cpp)
#include "mex.h"
#include
#include
void mexfunction(int nlhs, mxarray *plhs, int nrhs, const mxarray *prhs)
mexprintf("\n");
//釋放小陣列temp1
for ( i = 0; i < inm1; i++)
free(temp1);
//釋放小陣列temp2
for ( i = 0; i < inm2; i++)
free(temp2);
//釋放大陣列answer2
for ( i = 0; i < outm; i++)
free(answer2);
//二維轉一維輸出!!
for (i = 0; i < outm; i++)
for (j = 0; j < outn; j++)
// 釋放大陣列answer1
for ( i = 0; i < outm; i++)
free(answer1);
}
三、編譯
將add.c拷貝至matlab當前目錄,執行mex add.cpp,生成add.mexw64,該檔案實現求和功能。此時便可在matlab中呼叫該函式
使用c 呼叫matlab
使用的環境是vs2008 matlab2011,其它的版本應該差不多。使用matlab寫好乙個函式後,在c 中呼叫它,可以極大的提高開發速度。由於別的文章沒有介紹如何輸入輸出,我在這裡再寫一遍。1.配置 文章中,已經詳細介紹了如何配置matlab,不再贅述。2.編譯 上面的文章使用命令編譯,編譯出的...
matlab呼叫c 函式
經常會遇到乙個問題,就是怎麼用matlab來呼叫已經寫好的c 下面就學習一下。首先要明白呼叫c 需要用到mex,他主要和matlab的主要介面,介面的主要入口為如下函式 void mexfunction int nlhs,mxarray plhs,int nrhs,const mxarray prh...
C 呼叫MatLab引擎
1.確保本機安裝matlab 2.c 程式中新增對matlab的引用 安裝目錄下的mwarray.dll 4.指定matlab執行m檔案的路徑 預先寫好的m檔案存在本地目錄下,當前存在程式執行目錄下 string command string.emptry 定義命令列要執行的字串 string pa...