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.設定編譯器的方...