没有合适的资源?快使用搜索试试~ 我知道了~
Matlab以MEX方式调用C源代码(20211029184914).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 30 浏览量
2021-10-30
04:44:09
上传
评论
收藏 20KB PDF 举报
温馨提示
试读
9页
MATLAB
资源推荐
资源详情
资源评论
Matlab 以 MEX 方式调用 C 源代码
http://blog.sina.com.cn/s/blog_468651400100coas.html
如果我有一个用 C语言写的函数,实现了一个功能,如一个简单的函数:
double add(double x, double y)
{
return x + y;
}
现在我想要在 Matlab 中使用它,比如输入:
>> a =add(1.1, 2.2)
3.3000
要得出以上的结果,那应该怎样做呢?
解决方法之一是要通过使用 MEX 文件,MEX 文件使得调用 C 函数和调用 Matlab 的内置函数
一样方便。 MEX 文件是由原 C 代码加上 MEX 文件专用的接口函数后编译而成的。可以这样
理解,
MEX
文件实现了一种接口,它把在
Matlab
中调用函数时输入的自变量通过特定的接
口调入了 C 函数,得出的结果再通过该接口调回 Matlab 。该特定接口的操作,包含在
mexFunction 这个函数中,由使用者具体设定。
所以现在我们要写一个包含 add 和 mexFunction 的 C 文件,Matlab 调用函数, 把函数中的自
变量(如上例中的 1.1 和 2.2)传给 mexFunction 的一个参数, mexFunction 把该值传给 add,
把得出的结果传回给
mexFunction
的另一个参数,
Matlab
通过该参数来给出在
Matlab
语句
中调用函数时的输出值(如上例中的 a)。
值得注意的是 ,mex 文件是与平台有关的 ,以我的理解, mex 文件就是另类的动态链接库 。
在 matlab6.5 中使用 mex -v 选项,你可以看到最后 mex 阶段有类似如下的信息:
--> "del _lib94902.obj"
--> "del "test.exp""
--> "del "test.lib""
也就是说,虽然在 matlab6.5 生成的是 dll 文件,但是中间确实有过 lib 文件生成。
比如该 C文件已写好,名为 add.c。那么在 Matlab 中,输入:
>> mex add.c
就能把
add.c
编译为
MEX
文件(编译器的设置使用指令
mex -setup
),在
Windows
中,
MEX
文件类型为 mexw32,即现在我们得出 add.mexw32 文件。现在,我们就可以像调用 M 函数
那样调用 MEX 文件,如上面说到的例子。所以,通过 MEX 文件,使用 C 函数就和使用 M
函数是一样的了。
我们现在来说 mexFunction 怎样写。
mexFunction 的定义为:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
}
资源评论
jishuyh
- 粉丝: 0
- 资源: 7万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功