• VC++与Matlab混合编程之引擎操作详解(3)引擎API详解


    3. 引擎API详解

    在调用Matlab引擎之前,首先应在相关文件中加入一行:#include "enging.h",该文件包含了引擎API函数的说明和所需数据结构的定义。可以在VC中调用的引擎函数分别如下:

    3.1 引擎的打开和关闭

    engOpen-打开Matlab engine

     

    函数声明:

    Engine *engOpen(const char *startcmd);

    参数startcmd是用来启动Matlab引擎的字符串参数,在Windows操作系统中只能为NULL

    函数返回值是一个Engine类型的指针,它是在engine.h中定义的engine数据结构。

    EngClose-关闭Matlab 引擎

    函数声明:

    int engClose(Engine *ep);

    参数ep代表要被关闭的引擎指针。

    函数返回值为0表示关闭成功,返回1表示发生错误。

    例如,通常用来打开/关闭Matlab引擎的代码如下:

    Engine *ep; //定义Matlab引擎指针。

    if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。

    {

    MessageBox("Can't start Matlab engine!" );

    exit(1);

    }

    . …………

    engClose(ep); //关闭Matlab引擎。

    3.2 Matlab发送命令字符串

    engEvalString-发送命令让Matlab执行。

    函数声明:

    int engEvalString(Engine *ep, Const char *string);

    参数ep为函数engOpen返回的引擎指针,字符串string为要matlab执行的命令。

    函数返回值为0表示成功执行,返回1说明执行失败(如命令不能被Matlab正确解释或Matlab引擎已经关闭了)。

    3.3 获取Matlab命令窗口的输出

    要在VC中获得函数engEvalString发送的命令字符串被Matlab执行后在matlab窗口中的输出,可以调用engOUtputBuffer函数。

    函数声明:

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

    参数epMatlab引擎指针,p为用来保存输出结构的缓冲区,n为最大保存的字符个数,通常就是缓冲区p的大小。该函数执行后,接下来的engEvalString函数所引起的命令行输出结果会在缓冲区p中保存。如果要停止保存,只需调用代码:engOutputBuffer(ep, NULL, 0)

    3.4 读写Matlab数据

    3.4.1Matlab引擎工作空间中获取变量。

    mxArray *engGetVariable(Engine *ep, const char *name);

    参数ep为打开的Matlab引擎指针,name为以字符串形式指定的数组名。

    函数返回值是指向name数组的指针,类型为mxArray*mxArray数据类型在本文第4节详细简介)。

    3.4.2 Matlab引擎工作空间写入变量。

    int engPutVariable(Engine *ep, const char *name, const mxArray *mp);

    参数ep为打开的Matlab引擎指针,mp为指向被写入变量的指针,name为变量写入后在Matlab引擎工作空间中的变量名。

    函数返回值为0表示写入变量成功,返回值为1表示发生错误。

    3.5 调用引擎时显示/隐藏Matlab主窗口

    默认情况下,以engine方式调用Matlab的时候,会打开Matlab主窗口,可在其中随意操作。但有时也会干扰应用程序的运行,可用以下设置是否显示该窗口。

    int engSetVisible(Engine *ep, bool value);

    参数ep为打开的Matlab引擎指针,value为是否显示的标志,取值true(或1)表示显示Matlab窗口,取值false(或0)表示隐藏Matlab窗口。

    函数返回值为0表示设置成功,为1表示有错误发生。

    要获得当前Matlab窗口的显示/隐藏情况,可以调用函数:

    int engGetVisible(Engine *ep, bool *value);

    参数ep为打开的Matlab引擎指针,Value为用来保存显示/隐藏情况的变量(采用指针方式传递)。

    函数返回值为0表示获取成功,为1表示有错误发生。

  • 相关阅读:
    java代码 分解EXCEL(一)
    hdu 1226 BFS + bfs记录路径
    MVC-MODEL
    弱类型、强类型、动态类型、静态类型语言的区别是什么?
    Objective-C中的命名前缀说明
    self & this 上下文
    Object comparison
    Dynamic typing 动态类型
    iOS支付宝 9.x 版本首页效果
    Using an Image for the Layer’s Content
  • 原文地址:https://www.cnblogs.com/nktblog/p/2435686.html
Copyright © 2020-2023  润新知