matlab混合编程之mex文件
2013-05-28 14:47
411 查看
1:mex文件结构
a 子程序
b 入口程序
2:语法
3: 编译
编译链接C语言的MEX文件源程序,在MATLAB的控制窗口中输入:mex timestwoalt.c生成一个名为timestwoalt.mexw32的MEX文件
4:运行
x=2;
y=timestwoalt(x)
输出:y=4
a 子程序
b 入口程序
void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[]) { /*用户特定的代码….*/ }
2:语法
#include "mex.h" void timestwo_alt(double *y, double x) { *y = 2.0*x; } void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double *y; double x; /* 检查参数 */ if (nrhs != 1) { mexErrMsgTxt("One input argument required."); } else if (nlhs > 1) { mexErrMsgTxt("Too many output arguments."); } else if (!mxIsNumeric(prhs[0])) { mexErrMsgTxt("Argument must be numeric."); } else if (mxGetNumberOfElements(prhs[0]) != 1 || mxIsComplex(prhs[0])) { mexErrMsgTxt("Argument must be non-complex scalar."); } /* 为输出参数创建变量 */ 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混合编程--mex文件的编写、编译、调用
- VC++与Matlab混合编程之引擎操作详解(6)数据类型mxArray的操作
- matlab 和c混合编程-------------------基础
- MATLAB与C++混合编程:动态链接库方法实现混合编程及常见错误解决办法
- VC++与Matlab混合编程之二:调用Matlab中M函数转换成DLL文件的形式
- 64位系统vs2010平台下实现C++与matlab R2014混合编程方法示例
- VC++与Matlab混合编程之一——matlab引擎
- VC++6.0与matlab引擎混合编程
- VC++与Matlab混合编程之引擎操作详解
- Matlab 2016a和VS2013混合Dll编程步骤
- matlab与VC++进行混合编程
- vc和matlab混合调试mex文件
- 【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(3)
- VC与Matlab混合编程之调用动态链接库dll<二>
- VC++与Matlab混合编程之引擎操作详解
- Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)
- matlab与c#混合编程之图像参数传递
- [置顶] MATLAB和c#混合编程实现心电图显示软件
- Matlab生成C++代码及混合编程步骤说明
- Matlab与C#混合编程