Matlab、C混合程式設計(Matlab呼叫C)
阿新 • • 發佈:2019-01-01
類似Matlab的指令碼語言的最大詬病就是執行速度慢,而C的編寫難度大,但執行速度快,所以用Matlab呼叫C可以很好的互補。
用Matlab呼叫C語言如下,其中mexFunction是一個介面函式,用來溝通Matlab與C語言之間的程式設計代溝。
nlhs:輸出引數數目 (Left-hand side)
plhs:指向輸出引數的指標
nrhs:輸入引數數目
prhs:指向輸入引數的指標
#include "mex.h"
double cadd(double x,double y);
void mexFunction(int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[])
{
double *a;
double b, c;
plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
a = mxGetPr(plhs[0]);
b = *(mxGetPr(prhs[0]));
c = *(mxGetPr(prhs[1]));
*a = cadd(b, c);
}
double cadd(double x, double y)
{
return x + y;
}