在MATLAB中可调用的C或Fortran语言程序称为MEX文件。MATLAB可以直接把MEX文件视为它的内建函数进行调用。MEX文件是动态链接的子例程,MATLAB解释器可以自动载入并执行它。MEX文件主要有以下用途:
- 对于大量现有的C或者Fortran程序可以无须改写成MATLAB专用的M文件格式而在MATLAB中执行。
- 对于那些MATLAB运算速度过慢的算法,可以用C或者Frotran语言编写以提高效率。
具体操作过程:
- 在MATLAB中用命令mex -setup配置环境,找到对应的VS2010编译器
- 编写CPP源程序,源程序必须包括头文件#include "mex.h"(其中包括mex编程所需要的如矩阵等的定义)
- 通过MATLAB输入语句mex mexPlus.cpp。
- 调用时候以cpp文件名作为MATLAB函数调用,如下,调用方法为z = mexPlus(x, y); z = myplus(x, y)是错误的。
源程序如下
#include "mex.h"
void myplus(double x[], double y[], double z[])
{
z[0] = x[0] + y[0];
}
void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
double *x, *y, *z;
int mrows0, ncols0;
int mrows1, ncols1;
// 检查输入输出变量的个数
if (nrhs !