MATLAB引擎库函数介绍

C程序调用MATLAB的流程如图3-1所示,计算引擎应用程序与图1.1所示的MEX文件流程正好相反,是以C程序为主体,通过engine接口以后台方式启动MATLAB,并以引擎库函数调用MATLAB。

Document Image

图3-1 Windows 操作系统下的计算引擎应用程序调用流程

MATLAB引擎库函数以eng为前缀,常用引擎库函数如表3-1所示。各引擎函数简介如下。

表3-1 MATLAB常用引擎库函数

序号 函 数 功 能
1 engOpen 启动MATLAB引擎
2 engClose 关闭MATLAB引擎
3 engGetVariable 从MATLAB引擎中获取一个MATLAB矩阵
4 engPutVariable 向MATLAB引擎发送一个MATLAB矩阵
5 engEvalString 执行一个MATLAB命令
6 engOutputBuffer 创建一个存储MATLAB文本输出的缓冲区
7 engGetVisible 获取MATLAB引擎的可见状态
8 engSetVisible 设置MATLAB引擎的可见状态

(1) engOpen

code.matlab
Engine *engOpen(const char *startcmd);

参数:startcmd 在windows操作系统下,该参数一般设为NULL。

返回:指向MATLAB engine 的指针。

说明:由于MATLAB引擎在windows操作系统下的通信机制为COM的Server/Client机制,这需要MATLAB在本地计算机上注册MATLAB engine COM Server。注册方法为:在Windows命令行(开始->运行)输入“MATLAB /regserver”即可注册。

(2) engClose

code.matlab
int engClose(Engine *ep);

参数:ep 已打开的指向MATLAB引擎的指针。

返回:操作成功返回0,否则返回1。

说明:操作失败主要是试图再次关闭早已关闭的MATLAB引擎。

(3)engGetVariable

code.matlab
mxArray *engGetVariable(Engine *ep, const char *var_name);

参数:ep 已打开的指向MATLAB引擎的指针;

var_name 欲从MATLAB引擎空间中获取的变量名;

返回:操作成功返回指向新分配的mxArray类型矩阵,否则返回NULL。

说明:在不需使用该矩阵后,用户程序应释放该矩阵内存空间,以免造成内存泄漏。

(4) engPutVariable

code.matlab
int engPutVariable(Engine *ep, const char *var_name, const mxArray *array_ptr);

参数:ep 已打开的指向MATLAB引擎的指针;

var_name MATLAB引擎空间中的变量名;

array_ptr 用户程序中已定义的mxArray类型指针

返回:操作成功返回0,否则返回1。

说明:当MATLAB引擎空间中存在与var_name参数同名的mxArray类型矩阵时,其数据被覆盖,否则,在MATLAB引擎空间中创建以var_name参数为名的mxArray类型矩阵。

(5) engEvalString

code.matlab
int engEvalString(Engine *ep, const char *string);

参数:ep 已打开的指向MATLAB引擎的指针;

string 欲在MATLAB中执行的命令

返回:操作成功返回非零值,否则返回0。

(6) engOutputBuffer

code.matlab
int engOutputBuffer(Engine *ep, char *p, int n);

参数:ep 已打开的指向MATLAB引擎的指针;

p 指向所创建的字符缓冲区指针;

n 缓冲区字节数

返回:操作成功返回0,否则返回1。

说明:engOutputBuffer(ep, NULL, 0)关闭所创建的缓冲区。

(7) engGetVisible

code.matlab
int engGetVisible(Engine *ep, bool *value);

参数:ep 已打开的指向MATLAB引擎的指针;

value BOOL型指针,若ep所指的MATLAB引擎可见,其值为1,否则,为0;

返回:操作成功返回0,否则返回1。

(8) engSetVisible

code.matlab
int engSetVisible(Engine *ep, bool value);

参数:ep 已打开的指向MATLAB引擎的指针;

value BOOL型数值,value=1设置ep所指的MATLAB引擎可见,value=0设置ep所指的MATLAB引擎不可见;

返回:操作成功返回0,否则返回1。

说明:若ep所指的MATLAB引擎可见,则用户可将其用户交互式界面使用。