Matlab以MEX方式调用C源代码
2015-04-22 11:26
246 查看
#include "mex.h" // 使用MEX文件必须包含的头文件
// 执行具体工作的C函数
double add(double x, double y)
{
return x + y;
}
// MEX文件接口函数
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 = add(b, c);
}
mexFunction的内容是什么意思呢?我们知道,如果这样调用函数时:
>> output = add(1.1, 2.2);
在未涉及具体的计算时,output的值是未知的,是未赋值的。所以在具体的程序中,我们建立一个1x1的实double矩阵(使用 mxCreateDoubleMatrix函数,其返回指向刚建立的mxArray的指针),然后令plhs[0]指向它。接着令指针a指向plhs [0]所指向的mxArray的第一个元素(使用mxGetPr函数,返回指向mxArray的首元素的指针)。同样地,我们把prhs[0]和prhs [1]所指向的元素(即1.1和2.2)取出来赋给b和c。于是我们可以把b和c作自变量传给函数add,得出给果赋给指针a所指向的mxArray中的元素。因为a是指向plhs[0]所指向的mxArray的元素,所以最后作输出时,plhs[0]所指向的mxArray赋值给output,则
output便是已计算好的结果了。
// 执行具体工作的C函数
double add(double x, double y)
{
return x + y;
}
// MEX文件接口函数
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 = add(b, c);
}
mexFunction的内容是什么意思呢?我们知道,如果这样调用函数时:
>> output = add(1.1, 2.2);
在未涉及具体的计算时,output的值是未知的,是未赋值的。所以在具体的程序中,我们建立一个1x1的实double矩阵(使用 mxCreateDoubleMatrix函数,其返回指向刚建立的mxArray的指针),然后令plhs[0]指向它。接着令指针a指向plhs [0]所指向的mxArray的第一个元素(使用mxGetPr函数,返回指向mxArray的首元素的指针)。同样地,我们把prhs[0]和prhs [1]所指向的元素(即1.1和2.2)取出来赋给b和c。于是我们可以把b和c作自变量传给函数add,得出给果赋给指针a所指向的mxArray中的元素。因为a是指向plhs[0]所指向的mxArray的元素,所以最后作输出时,plhs[0]所指向的mxArray赋值给output,则
output便是已计算好的结果了。
相关文章推荐
- Matlab以MEX方式调用C源代码
- Matlab以MEX方式“调用”C源代码
- Matlab以MEX方式调用C源代码
- Matlab以MEX方式调用C源代码
- Matlab以MEX方式调用C源代码
- Matlab以MEX方式调用C源代码
- Matlab以MEX方式调用C源代码【转载】
- Matlab以MEX方式调用C源代码
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(二)
- MATLAB以MEX方式调用C/C++源代码(怎样写mex函数)
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(一)
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(四)
- windows 32/64位系统 下MATLAB使用MEX方式调用C/C++源码
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(二)
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(三)
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(三)
- Matlab与C/C++联合编程之Matlab以MEX方式调用C代码(五)完整过程加示
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(四)
- MATLAB以MEX方式调用C代码
- Matlab以MEX方式调用C源代码