实验平台
matlab 2012a
相关matlab地址
* matlab/extern/examples
* matlab/extern/include
步骤
mex -setup
- 配置编译器
编写程序test.c
#include "mex.h" void name(double matrix_ptr[], double a_ptr[], double b_ptr[]); void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { double *matrix_ptr; double *a_ptr, *b_ptr; if(nlhs > 1) { mexErrMsgTxt("Too many output arguments."); } if(nrhs != 2) { mexErrMsgTxt("Must have two input arguments."); } plhs[0] = mxCreateDoubleMatrix(2, 2, mxREAL); matrix_ptr = mxGetPr(plhs[0]); a_ptr = mxGetPr(prhs[0]); b_ptr = mxGetPr(prhs[1]); name(matrix_ptr, a_ptr, b_ptr); } void name(double matrix_ptr[], double a_ptr[], double b_ptr[]) { double a = a_ptr[0]; double b = b_ptr[0]; matrix_ptr[0] = a + b; matrix_ptr[1] = a - b; matrix_ptr[2] = a * b; matrix_ptr[3] = a / b; }
注: mexFunction函数是必须的,name函数是自定义的
mex test.c
- 生成test.mexw32(我的是32位机)
执行test(3,4),观察结果