matlab呼叫C語言

2021-06-28 19:28:33 字數 1946 閱讀 1296

一、首先要熟悉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...