matlab和C/C++混合编程--Mex
2015-04-16 20:05
351 查看
最近的项目需要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++与Matlab混合编程错误??? Unexpected Standard exception from MEX file.
- matlab和C/C++混合编程--Mex
- 关于Matlab的MEX技术 10分钟教会你简单的matlab和C/C++混合编程(mex文件)
- 关于C++与Matlab混合编程错误??? Unexpected Standard exception from MEX file.
- matlab和C/C++混合编程--Mex (六)参数传递
- 关于C++与Matlab混合编程错误??? Unexpected Standard exception from MEX file.
- mex 混合编程 matlab调用c/c++(含lib文件)经验汇总
- matlab和C/C++混合编程--Mex
- matlab和C/C++混合编程--Mex (六)参数传递
- matlab c++混合编程入门之Mex环境配置
- matlab和C/C++混合编程--Mex (六)参数传递
- matlab和C/C++混合编程--Mex
- Matlab与C++混合编程(依赖OpenCV)
- C++与Matlab混合编程总结(Mat mxArray mwArray转换)
- Matlab & C++ 混合编程mex文件的编写与调试
- C++和MATLAB混合编程-DLL篇
- matlab和C/C++混合编程--调用opencv
- MEX文件调试—MATLAB调用C++程序—混合编程
- [转] Matlab与C++混合编程(依赖OpenCV)
- matlab c++ 混合编程(3)——mwArray类操作