matlab和c++混合编程---Mex结构和mexFunction参数传递
2016-09-22 14:59
375 查看
最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题。现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加。首先讲讲写Mex的一些常规规定,然后我们会重点关注混合编程中最难解决数据的问题--结构到底如何转换,并且后面会重点说一下自己的程序。
一、Mex的结构
先看一个简单的程序(该程序保存在matlab主目录下名字是mexDemon.cpp,或者在主目录下新建一个.cpp文件):
然后对Matlab编译应用程序mex的编译器进行设置,在命令窗口输入 Mex –setup。 然后跟着步骤走选择合适的编译器即可。
设置完编译器之后在命令窗口输入Mex mexDemon.cpp 进行编译生成.mexw64文件,生成之后便可以直接调用了,例如本例子可以这样调用,就是直接在命令窗口输入 a = mexDemon(); 返回值如上。
二、C和Matlab的数据结构的转换
(1)数值的传递
matlab -> c++
c++ -> matlab
一个实例(numDemon.cpp):
如下图在命令窗口编译:
(2)矩阵的传入与传出
关于传出(c++到Matlab, 就是第一个例子),下面可以再给一个例子是如何从matlab传入到c++,看下面这段代码:
同样在命令窗口编译即可。
(3)字符串的传入与传出
matlab -> c++ (传入)
c++ -> matlab (传出)
一个实例(strDemon.cpp)
同样编译一下即可。
(4)cell的传入
后面待补充结构体和cell数组的传出,暂时还没遇到这样的需求。再贴上几个参考网址:
1.http://blog.sina.com.cn/s/blog_9db9f81901013yv2.html
2.http://blog.sina.com.cn/s/blog_80202a090100uhup.html
一、Mex的结构
先看一个简单的程序(该程序保存在matlab主目录下名字是mexDemon.cpp,或者在主目录下新建一个.cpp文件):
设置完编译器之后在命令窗口输入Mex mexDemon.cpp 进行编译生成.mexw64文件,生成之后便可以直接调用了,例如本例子可以这样调用,就是直接在命令窗口输入 a = mexDemon(); 返回值如上。
二、C和Matlab的数据结构的转换
(1)数值的传递
matlab -> c++
plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL);//创建返回的矩阵,范围plhs[0]为mxArray类型 y = mxGetPr(plhs[0]);//获取返回plhs[0]的数据地址,其后可以修改y的值就可以返回了
一个实例(numDemon.cpp):
(2)矩阵的传入与传出
关于传出(c++到Matlab, 就是第一个例子),下面可以再给一个例子是如何从matlab传入到c++,看下面这段代码:
(3)字符串的传入与传出
matlab -> c++ (传入)
(4)cell的传入
1.http://blog.sina.com.cn/s/blog_9db9f81901013yv2.html
2.http://blog.sina.com.cn/s/blog_80202a090100uhup.html
相关文章推荐
- c++与matla混合编程之一---调用matlab工具箱内的函数
- zz MATLAB 与 C 语言混合编程接口:MEX 函数最简单示例之一
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(四)
- matlab与c混合编程: 注释导致mex编译链接失败例子
- C++与Matlab混合编程之:矩阵数据结构
- Matlab与C++接口与混合编程讨论小结
- VC与Matlab混合编程之调用动态链接库dll(C++)——<二>
- Matlab与C/C++联合编程之Matlab以MEX方式调用C代码(五)完整过程加示
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(二)
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(三)
- Matlab与C++接口与混合编程讨论小结
- Matlab C/C++混合编程实例学习
- Matlab与C++接口与混合编程讨论小结
- 64位系统vs2010平台下实现C++与matlab R2014混合编程方法示例
- matlab c++ 混合编程初始设置
- Matlab与VC混合MEX编程之关于mexFunction篇
- MATLAB与C++混合编程:动态链接库方法实现混合编程及常见错误解决办法
- matlab c++ 混合编程初始设置
- C++与Matlab混合编程之:矩阵数据结构
- Matlab与C++的混合编程