主要内容

C ++ API MEX

笔记

c++的MEX API与C的MEX API不兼容C MEX文件应用程序.你不能在MEX文件中混用这些API。

C ++的MEX API使您能够创建充分利用C ++ 11层的功能优势的应用,如移动语义,异常处理和内存管理。

MATLAB :: MEX ::功能 c++ MEX函数的基类
MATLAB :: MEX ::参数列表 用于输入和输出c++ MEX函数的容器
matlab:引擎::MATLABEngine 类定义引擎API

MATLAB :: MEX ::功能

所有MEX文件实现是从派生的类MATLAB :: MEX ::功能

的std :: shared_ptr的 getEngine() 获取指针MATLABEngine目的
空白mexLock () 防止从内存中清除MEX文件
无效mexUnLock() 允许从内存MEX文件的清理
的std :: u16string getFunctionName() 获取当前MEX函数的名称

MATLAB :: MEX ::参数列表

通过传递的MEX函数的参数运算符()MexFunction类是MATLAB :: MEX ::参数列表容器。ArgumentList是全方位的阵列的底层集合。当ArgumentList对象支持下述功金宝app能。

运营商[] 启用[]进行索引的元素ArgumentList
开始() 开始迭代器。
结尾() 迭代器。
尺寸() 返回参数列表中元素的个数。使用此功能来检查在调用点指定的输入和输出的数量。
空() 返回一个逻辑值,指示参数列表是否为空(大小()= = 0).

c++引擎API

使用MATLAB®函数,变量,以及使用该对象matlab:引擎::MATLABEngineAPI将在下面的部分中描述。调用matlab:引擎::MATLABEngine功能,得到由返回的共享指针MATLAB :: MEX ::功能:: getEngine功能。例如:

的std :: shared_ptr的 matlabPtr = getEngine();

使用该指针调用引擎功能。例如:

matlabPtr - >函数宏指令(…);

只有在同一个线程中调用引擎功能MexFunction班级。

matlab::引擎::MATLABEngine::函数宏指令 调用带参数的功能的MATLAB
matlab::引擎::MATLABEngine:: fevalAsync 异步调用带参数和返回值的MATLAB函数。
matlab::引擎::MATLABEngine:: eval 在评估基础工作区MATLAB语句
MATLAB ::引擎:: MATLABEngine :: evalAsync 在基本工作空间中异步地评估MATLAB语句
MATLAB ::引擎:: MATLABEngine ::的getVariable 从MATLAB基础或全局工作区获取变量
matlab::引擎::MATLABEngine:: getVariableAsync 从MATLAB基础或异步全局工作区获取变量
matlab::引擎::MATLABEngine:: setVariable 将变量放入MATLAB库或全局工作区中
matlab::引擎::MATLABEngine:: setVariableAsync 在MATLAB基础或异步全局工作区将变量
MATLAB ::引擎:: MATLABEngine ::的getProperty 获取对象的属性
matlab::引擎::MATLABEngine:: getPropertyAsync 异步获取对象属性
matlab::引擎::MATLABEngine:: setProperty 设置对象属性
MATLAB ::引擎:: MATLABEngine :: setPropertyAsync 设置对象属性异步

matlab::引擎::MATLABEngine::函数宏指令

的std ::矢量 feval(常量的std :: u16string&函数,常量为size_t numReturned,常量性病::矢量&指定参数时,常量性病:: shared_ptr的&输出= STD :: shared_ptr的,常量性病:: shared_ptr的&误差= STD :: shared_ptr的())
MATLAB ::数据::阵列feval(常量的std :: u16string&函数,常量性病::矢量&指定参数时,常量性病:: shared_ptr的&输出= STD::shared_ptr的(),常量性病:: shared_ptr的&误差= STD :: shared_ptr的())
MATLAB ::数据::阵列feval(常量的std :: u16string&函数,常量MATLAB ::数据::阵列&精氨酸,常量性病:: shared_ptr的&输出= STD :: shared_ptr的(),常量性病:: shared_ptr的&误差= STD :: shared_ptr的())
与resultType feval(常量的std :: u16string&函数,常量性病:: shared_ptr的&输出,常量性病:: shared_ptr的&错误,RhsArgs && ... rhsArgs)
与resultType feval(常量的std :: u16string和功能,RhsArgs && ... rhsArgs)

描述

从MEX函数调用MATLAB函数。使用函数宏指令与从MEX函数传递参数调用MATLAB功能,并因此从MATLAB返回MEX功能。

输入和输出是通过定义的类型MATLAB数据API.也有支持本地C ++类型的语法。金宝app

参数

const std:: u16string函数

MATLAB函数或脚本,以评估的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

const size_t nlhs

返回的值数。

const std::向量< matlab::数据::>数组参数

中的多个输入参数传递给MATLAB函数的std ::矢量.在MATLAB中将矢量转换为列数组。

常量MATLAB ::数据::阵列&ARG

传递给MATLAB函数的单一输入参数。

常量性病:: shared_ptr的&输出= STD :: shared_ptr的()

流缓存器用于存储从MATLAB函数标准输出。

常量性病:: shared_ptr的&误差= STD :: shared_ptr的()

流缓存器用于存储从MATLAB函数的错误消息。

RhsArgs && ... rhsArgs

用于函数输入的本地c++数据类型。函数宏指令接受这些C ++的数据类型的标量输入:BOOL.INT8_T.int16_tint32_tint64_tuint8_t.uint16_tUINT32_T.UINT64_T.浮动

返回值

的std ::矢量

MATLAB函数返回的输出。

MATLAB ::数据::阵列

单路输出从MATLAB函数返回。

ResultType

作为用户指定类型的MATLAB函数返回的输出。可以是一个的std ::元组如果返回多个参数。

例外

matlab的发动机:: :: MATLABException

有一个在功能的MATLAB运行时错误。

matlab:引擎::TypeConversionException

MATLAB函数的结果不能转换为指定的类型。

matlab:引擎::MATLABSyntaxException

在MATLAB函数中有一个语法错误。

有关更多信息,请参阅从MEX函数调用MATLAB函数

matlab::引擎::MATLABEngine:: fevalAsync

FutureResult> fevalAsync(const std::u16string &function, const size_t numReturned, const std::vector &args, const std::shared_ptr &output = std::shared_ptr(),const std::shared_ptr &error = std::shared_ptr())
FutureResult < matlab::数据::数组> fevalAsync (const std:: u16string函数,const std::向量数组< matlab::数据::> args, const std::要查看< matlab::引擎::StreamBuffer >和输出= std::要查看< matlab::引擎::StreamBuffer > (), const std::要查看< matlab::引擎::StreamBuffer > & error = std::要查看< matlab::引擎::StreamBuffer > ())
使用FutureResult  fevalAsync(常量的std :: u16string&函数,常量MATLAB ::数据::阵列&精氨酸,常量性病:: shared_ptr的&输出= STD :: shared_ptr的(),常量性病:: shared_ptr的&误差= STD :: shared_ptr的())
futurerresult  fevalAsync(const std::u16string &function, const std::shared_ptr &output, const std::shared_ptr &error, RhsArgs&&…rhsArgs)
futurerresult  fevalAsync(const std::u16string &function, RhsArgs&&…rhsArgs)

描述

异步调用带参数和返回值的MATLAB函数。的更多信息使用mexCallMATLAB进行异步请求

参数

const std:: u16string函数

MATLAB函数或脚本,以评估的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

const size_t numReturned

返回的值数

const std::向量< matlab::数据::>数组参数

多输入参数传递给MATLAB功能在的std ::矢量.在MATLAB中将矢量转换为列数组。

常量MATLAB ::数据::阵列ARG

传递给MATLAB函数的单一输入参数。

常量性病:: shared_ptr的&输出= STD :: shared_ptr的()

流缓存器用于存储从MATLAB函数标准输出。

常量性病:: shared_ptr的&误差= STD :: shared_ptr的()

流缓存器用于存储从MATLAB函数的错误消息。

RhsArgs && ... rhsArgs

用于函数输入的本地c++数据类型。函数宏指令接受这些C ++的数据类型的标量输入:BOOL.INT8_T.int16_tint32_tint64_tuint8_t.uint16_tUINT32_T.UINT64_T.浮动

返回值

FutureResult

一种FutureResult对象,用于获取调用MATLAB函数的结果。

例外

没有一个

matlab::引擎::MATLABEngine:: eval

void eval(const std::u16string &statement, const std::shared_ptr &output = std::shared_ptr (), const std::shared_ptr &error = std::shared_ptr ())

描述

在调用函数工作区中,将MATLAB语句作为文本字符串计算。

参数

const std:: u16string声明

MATLAB语句来计算

常量性病:: shared_ptr的&输出

流缓冲区用于存放从MATLAB语句标准输出

const std::要查看< matlab::引擎::StreamBuffer > & error

用于存储来自MATLAB命令的错误消息的流缓冲区

例外

matlab:引擎::MATLABExecutionException

有一个在MATLAB语句运行时错误。

matlab:引擎::MATLABSyntaxException

在MATLAB语句中有一个语法错误。

有关更多信息,请参阅执行从MEX功能的MATLAB语句

MATLAB ::引擎:: MATLABEngine :: evalAsync

使用FutureResult <空隙> evalAsync(常量的std :: u16string&STR,常量性病:: shared_ptr的&输出= STD :: shared_ptr的(),常量性病:: shared_ptr的&误差= STD :: shared_ptr的())

描述

异步计算一个MATLAB语句作为一个字符串。的更多信息使用mexCallMATLAB进行异步请求

参数

常量的std :: u16string&STR

MATLAB语句来计算

const std::shared_ptr &输出

流缓冲区用于存放从MATLAB语句标准输出。

const std::shared_ptr & error

流缓存器用于存储从MATLAB命令的错误消息。

返回值

MATLAB ::引擎::将FutureResult

一种FutureResult对象,用于等待MATLAB语句完成。

例外

没有一个

MATLAB ::引擎:: MATLABEngine ::的getVariable

matlab::data::Array getVariable(const std::u16string &varName, WorkspaceType WorkspaceType = WorkspaceType::BASE)

描述

从MATLAB基础或全局工作区中获取一个变量。

参数

常量的std :: u16string&varName中

在MATLAB工作空间的变量的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

MATLAB ::引擎:: WorkspaceType workspaceType = MATLAB ::引擎:: WorkspaceType :: BASE

MATLAB工作空间(BASE或GLOBAL)来获取变量。有关更多信息,请参阅全球的matlab:引擎::WorkspaceType

返回值

MATLAB ::数据::阵列

从MATLAB基或全局工作区获得的变量

例外

matlab:引擎::MATLABExecutionException

请求的变量不指定MATLAB基础或全局工作空间存在。

有关更多信息,请参阅从MEX设置和获取MATLAB变量

matlab::引擎::MATLABEngine:: getVariableAsync

使用FutureResult  getVariableAsync(常量的std :: u16string&varName中,WorkspaceType workspaceType = WorkspaceType :: BASE)

描述

获得从MATLAB基础或异步工作区的全局变量。

参数

常量的std :: u16string&varName中

在MATLAB工作空间中变量的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

WorkspaceType WorkspaceType = WorkspaceType::BASE

MATLAB工作空间(BASE或GLOBAL)来获取变量。有关更多信息,请参阅全球的

返回值

MATLAB ::引擎::将FutureResult

一种FutureResult对象,你可以用它来获得从MATLAB工作空间作为获得的变量matlab.data.Array

例外

没有一个

matlab::引擎::MATLABEngine:: setVariable

空隙setVariable(常量的std :: u16string&varName中,常量MATLAB ::数据::阵列&变种,WorkspaceType workspaceType = WorkspaceType :: BASE)

描述

把一个变量到MATLAB基础或全局工作区。如果具有相同名称的变量在MATLAB工作空间存在,setVariable将其覆盖。

参数

常量的std :: u16string&varName中

变量的名称,在MATLAB工作区创建。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

const matlab::数据::数组var

变量的值来创建在MATLAB的工作空间。

MATLAB ::引擎:: WorkspaceType workspaceType = MATLAB ::引擎:: WorkspaceType :: BASE

MATLAB工作空间(BASE或GLOBAL)将变量放入。有关更多信息,请参阅全球的matlab:引擎::WorkspaceType

有关更多信息,请参阅从MEX设置和获取MATLAB变量

matlab::引擎::MATLABEngine:: setVariableAsync

futurerresult  setVariableAsync(const std::u16string &varName, const matlab::data::Array var, WorkspaceType WorkspaceType = WorkspaceType::BASE)

描述

把一个变量到MATLAB基础或异步全局工作区。如果具有相同名称的变量在MATLAB基工作区存在,setVariableAsync将其覆盖。

参数

常量的std :: u16string&varName中

变量的名称,在MATLAB工作区创建。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

const matlab::数据::数组var

变量的值在MATLAB工作区创建

WorkspaceType WorkspaceType = WorkspaceType::BASE

把变量在MATLAB BASE或GLOBAL工作区。有关更多信息,请参阅全球的

例外

没有一个

MATLAB ::引擎:: MATLABEngine ::的getProperty

MATLAB ::数据::阵列的getProperty(常量MATLAB ::数据::阵列&objectArray,为size_t索引,常量性病:: u16string&propertyName的)
MATLAB ::数据::阵列的getProperty(常量MATLAB ::数据::阵列&对象,常量性病:: u16string&propertyName的)

描述

获取对象属性的值。如果对象输入参数是对象的数组,指定数组元素的索引对应于你想获得其属性值的对象。

参数

常量MATLAB ::数据::阵列&objectArray

MATLAB对象数组

const matlab::数据::数组对象

标量MATLAB对象

size_t指数

对象数组中的从零开始的索引,指定该数组中返回属性值的对象

常量的std :: u16string&propertyName的

该属性的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

返回值

MATLAB ::数据::阵列

指定属性的值

例外

matlab:引擎::MATLABExecutionException

该属性不存在。

有关更多信息,请参阅MATLAB在MEX功能的对象

matlab::引擎::MATLABEngine:: getPropertyAsync

MATLAB ::发动机::使用FutureResult  getPropertyAsync(常量MATLAB ::数据::阵列&objectArray,为size_t索引,常量性病:: u16string&propertyName的)
MATLAB ::发动机::使用FutureResult  getPropertyAsync(常量MATLAB ::数据::阵列&对象,常量性病:: u16string&propertyName的)

描述

找对象属性的值是异步的。如果对象输入参数是对象的数组,指定数组元素的索引对应于你想获得其属性值的对象。

参数

常量MATLAB ::数据::阵列&objectArray

MATLAB对象数组

const matlab::数据::数组对象

标量MATLAB对象

size_t指数

对象数组中的从零开始的索引,指定该数组中返回属性值的对象

常量的std :: u16string&propertyName的

该属性的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

返回值

MATLAB ::引擎::将FutureResult

MATLAB ::引擎::将FutureResult对象,该对象用于同步操作。

例外

没有一个

matlab::引擎::MATLABEngine:: setProperty

空隙的setProperty(MATLAB ::数据::阵列&objectArray,为size_t索引,常量性病:: u16string&propertyName的,常量MATLAB ::数据::阵列&的PropertyValue)
void setProperty(matlab::data::Array &object, const std::u16string &propertyName, const matlab::data::Array &propertyValue)

描述

设置对象属性的值。如果对象输入参数是一个对象数组,请指定数组元素的索引,该数组元素对应于要设置其属性值的对象。

参数

MATLAB ::数据::阵列&objectArray

MATLAB对象数组

matlab::数据::数组对象

标量MATLAB对象

size_t指数

基于零索引到对象阵列,指定数组,其属性值被设置在对象

常量的std :: u16string&propertyName的

要设置的属性的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

常量MATLAB ::数据::阵列&的PropertyValue

分配给财产的价值

例外

matlab:引擎::MATLABExecutionException

该属性不存在。

有关更多信息,请参阅MATLAB在MEX功能的对象

MATLAB ::引擎:: MATLABEngine :: setPropertyAsync

使用FutureResult <空隙> setPropertyAsync(MATLAB ::数据::阵列&objectArray,为size_t索引,常量性病:: u16string&propertyName的,常量MATLAB ::数据::阵列&的PropertyValue)
使用FutureResult <空隙> setPropertyAsync(MATLAB ::数据::阵列&对象,常量性病:: u16string&propertyName的,常量MATLAB ::数据::阵列&的PropertyValue)

描述

异步设置对象属性的值。如果对象输入参数是一个对象数组,请指定数组元素的索引,该数组元素对应于要设置其属性值的对象。

参数

MATLAB ::数据::阵列&objectArray

MATLAB对象数组

matlab::数据::数组对象

标量MATLAB对象

size_t指数

基于零索引到对象阵列,指定数组,其属性值被设置在对象

常量的std :: u16string&propertyName的

要设置的属性的名称。指定名称为的std :: u16string.也可以将此参数指定为std :: string.

常量MATLAB ::数据::阵列&的PropertyValue

分配给财产的价值。

例外

没有一个

异常类

异常 导致

matlab:引擎::EngineException

有一个在功能的MATLAB运行时错误或MATLAB无法启动。

matlab:引擎::MATLABSyntaxException

在MATLAB函数中有一个语法错误。

matlab:引擎::MATLABExecutionException

在MATLAB函数或语句中有一个MATLAB运行时错误。

matlab:引擎::TypeConversionException

MATLAB函数的结果不能转换为指定的类型

有关更多信息,请参阅在MEX功能捕获异常

相关的话题