matlab混合程式設計之mex檔案

2022-08-12 14:36:16 字數 1094 閱讀 1731

1:mex檔案結構

a 子程式

b 入口程式

void mexfunction(int nlhs, mxarray *plhs,int nrhs,const mxarray *prhs)

2:語法

#include "

mex.h

"void timestwo_alt(double *y, double

x)void mexfunction( int nlhs, mxarray *plhs,

int nrhs, const mxarray *prhs )

else

if (nlhs > 1

) else

if (!mxisnumeric(prhs[0

]))

else

if (mxgetnumberofelements(prhs[0]) != 1 || mxiscomplex(prhs[0

]))

/*為輸出引數建立變數

*/plhs[

0] = mxcreatedoublematrix(1,1

,mxreal);

/*為引數 x、y賦值,x為值,而y為指標

(由於matlab沒有值傳遞,所以用指標才能得到修改後的y值,

不然修改的是y的乙個副本,為臨時變數,在函式返回時,y值沒有變化,

不能得到希望的結果)

*/x = mxgetscalar(prhs[0

]);y = mxgetpr(plhs[0

]);/*

呼叫timestwo_alt 子函式

*/timestwo_alt(y,x);

}

3: 編譯

編譯鏈結

c語言的

mex檔案源程式,在

matlab

的控制視窗中輸入:

mex timestwoalt.c

生成乙個名為

timestwoalt.mexw32

的mex

檔案4:執行

x=2;

y=timestwoalt(x)

輸出:y=4

matlab和C C 混合程式設計 Mex

最近的專案需要matlab和c的混合程式設計,經過一番努力終於完成了專案要解決的問題。現在就將mex的一些經驗總結一下,當然只是剛剛開始,以後隨著學習的深入繼續新增。首先講講寫mex的一些常規規定,然後我們會重點關注混合程式設計中最難解決資料的問題 結構到底如何轉換,並且後面會重點說一下自己的程式。...

Matlab中mex與C混合程式設計總結

使用mex和c可以加快演算法的執行速度,mex檔案包含乙個入口函式如下 void mexfunction int nlhs,mxarray plhs,int nrhs,const mxarray prhs 入口函式有四個引數 prhs為mxarray結構體型別的指標陣列,該陣列的元素按順序指向所有的...

matlab混合程式設計 deploytool

1.首先說我遇到的最大的問題,就是不能用matlab 自帶的編譯器 lcc win32,用這個可以成功編譯出dll,但是我這裡呼叫老是崩潰。我的matlab版本是2010a的win32版本,後來選用的編譯器是 microsoft visual c 2008,可以成功編譯且正確呼叫。2.設定編譯器的方...