vc++ 与 matlab混合编程

环境: VS2008 MATLABR2009a
一. 编译环境配置:设置相应的Matlab包含文件和库文件路径,添加相应的库文件
方法一:
1、点击 菜单工具/选项/项目和解决方案/VC++目录/显示目录下拉列表/包含文件,新建目录项,然后加入:MATLAB安装路径\extern\include;同理,在库文件下新建目录,加入:MATLAB安装路径\extern\lib\win32\microsoft
2、点击 菜单项目/属性/配置属性/链接器/输入,附加依赖项加入库文件:libmx.lib,libmat.lib,libeng.lib。
方法二:
1. 点击 项目/属性/配置属性/ C/C++/常规,附加包含目录项加入:MATLAB安装路径\extern\include;然后点击 链接器/常规,附加库目录加入:MATLAB安装路径\extern\lib\win32\microsoft
2. 操作同方法一的第二步。
方法二的配置界面也可以在资源管理器中点击相应的项目,右击弹出快捷菜单,点击引用选项弹出。
注:对于不同的解决方案,方法一中的第1步只需配置一次,方法二是针对具体解决方案的,每次都需配置;库文件每次都需添加。
二. Matlab engine操作步骤
1.打开engine
2.在engine中执行Matlab指令
3.关闭engine
三. 源程序中添加头文件
在调用Matlab引擎之前,应在相关文件中加入一文件包含指令
#include "engine.h"
该头文件包含了引擎API函数的说明和所需数据结构的定义。
四. Matlab engine常用API
engOpen 打开Matlab engine
engClose 关闭Matlab engine
engEvalString 发送命令字符串让Matlab执行
engOutputBuffer 创建Matlab输出缓冲区
engGetVariable 从Matlab engine 工作空间中获取变量值
engPutVariable 向Matlab engine 引擎工作空间写入变量值
engGetArray 从Matlab engine 工作空间中获取一个Matlab矩阵
engPutArray 向Matlab engine 工作空间中发送一个Matlab矩阵
engSetVisible 显示/隐藏 Matlab engine 会话框
API函数具体用法查阅相关资料。
五. Matlab 组件注册
使用engOpen()打开Matlab引擎总是失败,问题可能就是Matlab组件没有注册。注册方法:点击开始/运行/cmd,在命令行提示窗口下更改到Matlab安装路径/bin,运行指令 matlab/regserver,注册成功后会弹出Matlab 命令窗口。
六、在engine中执行load 指令
假如需要在engine工作空间读入大量数据文件,而数据文件不在Matlab搜索路径下,则指令
engEvalString(ep,"load -ascii xx.dat");
会失败。解决方法就是将当前数据文件的路径加入Matlab的搜索路径中,操作方法:点击Matlab菜单 File/ Set path,加入数据文件路径。
Tags: 

延伸阅读

最新评论

发表评论