基础知识(一)matlab与c++混合编程之环境搭建
来源:互联网 发布:数据库工程师 历年真题 编辑:程序博客网 时间:2024/06/06 07:51
Matlab 与c++混合编程方法
开发环境:win7 64位+vs2010+matlab
如果想要让matlab调用c++的函数类,则需要把c++编译成mex文件,使用这个方法可以实现混合调试。不过我认为学习c++与matlab混合编程一般是通过c++调用matlab函数,因为matlab具有强大的数学函数库,然而vc++具有界面设计灵活的优点,因此这里只介绍通过vc++调用matlab的方法。
(1)环境配置搭建
- matlab配置:开始前matlab需要先安装两个编译插件,这个安装直接在matlab命令窗口中敲入分别输入命令:
>>mex -setup
>>mbuild –setup
安装过程中要么直接回车,要么选择相关的编译器。
- vc++项目配置:安装完毕之后,配置c++程序中的包含目录、库目录这个对应于你的电脑matlab的安装位置分别把.h和lib文件指向..\extern\include、..\extern\lib\win64\microsoft.
除此之外还要在”链接器-》附加依赖项 “ 中加入调用eigin所需的库libmx.lib、 libmat.lib、libeng.lib,以及调用mwArray所需的类的库mclmcrrt.lib,mwArray是连接c++与matlab所需的 矩阵类,如果不懂这个类的使用需要先网上查看一下用法。同时还要在系统坏境变量中,添加matlab的动态链接库.dll文件所在的位置,这个就在matlab安装位置的bin目录下。
(2)程序调用
接着就要开始学习如何通过c++调用matab的函数库了,这个调用方法有两个:
第一种方法:在c++中直接调用matlab的计算引擎eigin。
在调用的文件中添加eigin头文件:
#include <engine.h>
然后在程序想要引用matlab的地方调用eigin函数:
Engine *ep;
ep=engOpen(NULL);
engEvalString(ep,"x=0:0.05:2*pi;y=sin(x);plot(x,y,'.b')");
我这里是通过c++调用matlab,来绘制一个正玄函数作为例子,在engEvalString函数就是输入命令函数的代码,当然这个函数可以每次在输入的字符串当中只有一条命令,然后多次调用engEvalString函数,你也可以直接把所有的matlab函数代码直接当做一个字符串,输入engEvalString函数中。测试一下调用结果:
我在例子中通过mfc对话框的open按钮,打开读取图片,并且调用matlab函数的绘制函数,可以看到同时出现了mfc与matlab绘制窗口的共存。我最喜欢用matlab与c++混合编程的原因就是这个,c++逻辑调试比较难,但是如果由matlab显示c++程序运行中一些数据的变化结果进行调试,那就相当爽了。
这种调用eigin的方法缺点在于要求运行程序的电脑中装有matlab,这个方法我比较不喜欢,因为在公司上班的时候,经常要把自己的demo结果发给其他人测试,而其它人的电脑上没有装matlab,这样就调用不了matlab的eigin
第二种方法:使用把matlab函数生成为动态链接库,然后在c++中调用该动态链接库:这里测试一下通过c++输入数据给matlab,这些数据是一个图片的其中一个通道数据,然后在matlab中显示该单通道图片,最后把数据返回给c++。采用这种方法就要用到mwArray类实现数据传输了。
matlab图片数据显示函数
mclmcrrt.lib
libmx.lib
libmat.lib
libeng.lib
最后显示结果为:
可以看到,mfc对话框读取显示图片,同时matlab出现了绘制figure窗口。本文地址:http://blog.csdn.net/hjimce/article/details/45244935 作者:hjimce 联系qq:1393852684 更多资源请关注我的博客:http://blog.csdn.net/hjimce 原创文章,版权所有,转载请保留本行信息
- 顶
- 0
- 踩
- 基础知识(一)matlab与c++混合编程之环境搭建
- 基础知识(一)matlab与c++混合编程之环境搭建
- Win7-64bit下matlab C混合编程环境搭建
- Win7-64bit下matlab C混合编程环境搭建
- matlab与c(c++)混合编程
- matlab与C混合编程
- matlab与c混合编程
- matlab与C混合编程
- MATLAB与C混合编程
- matlab与c混合编程
- 基础知识(二)matlab与c++混合编程之经验笔记
- 基础知识(二)matlab与c++混合编程之经验笔记
- 一分钟了解"matlab与c混合编程mex"
- c与matlab混合编程之dll调用
- matlab与C语言混合编程之openmp多线程
- matlab与C++/C 混合编程
- MATLAB与.NET混合编程实例(C#)
- Matlab与C/C++混合编程(mex文件)
- 3D音效-HRTF
- oracle 监听启动、停止、查看命令
- 调用bat执行planning规则/规则集
- Thinking In Java阅读日记1
- RecyclerView文字水平滑动可点击且item点击变色Demo
- 基础知识(一)matlab与c++混合编程之环境搭建
- [OpenLayers 3]地图所有组成部分
- Android local socket学习总结
- 使用Picasso加载图片的内存优化实践
- poj 3414 Pots (BFS + 记录路径)
- hdu 5932: Backpack on Tree 贪心+dp
- Fragment 中获取父Activity控件
- Linux --- vim命令
- 基础知识(二)matlab与c++混合编程之经验笔记