在MATLAB中调用C语言,可以共用代码,并且提高MATLAB程序的效率。查阅了网上的资料,做了一个整合。
亲测效果如下:
1、MATLAB调用C语言函数的原理
这篇文章对MexFuntion中的每个变量,传值过程等都写得很清楚
http://download.csdn.net/detail/rinna198705150332/4564928
2、MATLAB调用C语言实例
又在一篇博文matlab中调用c语言函数中,看到了这个简单的例子,亲测可用。操作步骤:
1.在matlab中新建文件
代码如下:
- #include "mex.h" //头文件必须包含mex.h
- double mexSimpleDemo(double *y,double a,double b); //<a href="http://lib.csdn.net/base/c" class='replace_word' title="C语言知识库" target='_blank' style='color:#df3434; font-weight:bold;'>C语言</a><a href="http://lib.csdn.net/base/datastructure" class='replace_word' title="算法与数据结构知识库" target='_blank' style='color:#df3434; font-weight:bold;'>算法</a>程序声明,在最后调用时,第一
- // 个参数是返回结果
- //c语言到matlab变换,以mexFunction命名
- void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
- {
- double *y;
- double m,n;
- //获取输入变量的数值大小
- m=mxGetScalar(prhs[0]);
- n=mxGetScalar(prhs[1]);
- //获取输出变量的指针
- plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);
- y=mxGetPr(plhs[0]);
- //调用子函数
- mexSimpleDemo(y,m,n);
- }
- //C语言函数
- double mexSimpleDemo(double *y,double a,double b)
- {
- return *y=(a>b)?a:b;
- }
保存为.c格式的文件
2.在matlab中输入
mex mexSimpleDemo.c
3.测试调用结果在matlab输入
a=mexSimpleDemo(5,3)
结果如下:
a=
5
3、调试Mex文件问题
这篇博文Matlab调用C程序,在Matlab环境下使用 mex –g myhilb.c命令进行调试,但无法加断点进行单步调试,故需转到VS环境下调试的“VS中单步调试Mex文件”问题。
先挖个坑,回头再填!