主要内容

c++ mex API

请注意

中描述的C MEX API与c++ MEX API不兼容编写MATLAB可调用C函数(MEX文件).不能在MEX文件中混合这些api。

c++ MEX API允许您创建利用c++ 11特性的应用程序,例如移动语义、异常处理和内存管理。

matlab:墨西哥人:函数 c++ MEX函数的基类
matlab:墨西哥人::ArgumentList 用于c++ MEX函数输入和输出的容器
matlab:引擎::MATLABEngine 类定义引擎API

matlab:墨西哥人:函数

所有MEX文件实现都是派生自matlab:墨西哥人:函数

std::要查看< matlab::引擎::MatlabEngine > getEngine () 获取指向MATLABEngine对象
空白mexLock () 防止从内存中清除MEX文件
空白mexUnLock () 允许从内存中清除MEX文件
std:: u16string getFunctionName () 获取当前MEX函数的名称

matlab:墨西哥人::ArgumentList

参数传递的MEX函数参数操作符()MexFunctionmatlab:墨西哥人::ArgumentList容器。ArgumentList是基础数组集合的完整范围。的ArgumentList对象支持以下函金宝app数。

运营商[] 使[]类元素的索引ArgumentList
开始() 开始迭代器。
结束() 迭代器。
尺寸() 返回参数列表中的元素个数。使用此函数检查调用地点指定的输入和输出的数量。
空() 返回一个逻辑值,指示参数列表是否为空(Size () == 0).

c++引擎API

使用MATLAB®类的函数、变量和对象matlab:引擎::MATLABEngineAPI将在以下部分中描述。打电话给matlab:引擎::MATLABEngine函数返回的共享指针matlab::墨西哥人::功能::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::vector feval(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)
matlab::data::Array feval(const std::u16string &function, const std::vector &args, const std::shared_ptr &output = std::shared_ptr(), const std::shared_ptr &error = std::shared_ptr())
matlab::data::Array feval(const std::u16string &function, const matlab::data::Array &arg, const std::shared_ptr &output = std::shared_ptr(), const std::shared_ptr &error = std::shared_ptr())
ResultType feval(const std::u16string &function, const std::shared_ptr &output, const std::shared_ptr &error, RhsArgs&&…rhsArgs)
ResultType feval(const std::u16string &function, rhsargs&&…rhsArgs)

描述

从MEX函数调用MATLAB函数。使用函数宏指令使用从MEX函数传递的参数调用MATLAB函数,并将MATLAB的结果返回到MEX函数。

类型定义的输入和输出类型MATLAB数据API for c++.还有一种支持原生c++类型的语法。金宝app

参数

常量std::u16string &函数

要计算的MATLAB函数或脚本的名称。将名称指定为std:: u16string.此外,您可以将此参数指定为std:: string

常量NLHS的大小

返回值的个数。

const std::vector &args

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

const matlab::data::Array &arg

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

const std::shared_ptr &output = std::shared_ptr()

流缓冲区用于存储来自MATLAB函数的标准输出。

const std::shared_ptr &error = std::shared_ptr()

流缓冲区用于存储来自MATLAB函数的错误消息。

RhsArgs&&……rhsArgs

用于函数输入的原生c++数据类型。函数宏指令接受这些c++数据类型的标量输入:保龄球int8_tint16_tint32_tint64_tuint8_tuint16_tuint32_tuint64_t浮动

返回值

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

从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(), const std::shared_ptr &error = std::shared_ptr())
FutureResult fevalAsync(const std::u16string &function, const std::vector &args, const std::shared_ptr &output = std::shared_ptr(), const std::shared_ptr &error = std::shared_ptr())
FutureResult fevalAsync(const std::u16string &function, const matlab::data::Array &arg, const std::shared_ptr & output = std::shared_ptr(), const std::shared_ptr & error = std::shared_ptr())
FutureResult fevalAsync(const std::u16string &function, const std::shared_ptr &output, const std::shared_ptr &error, RhsArgs&&…rhsArgs)
FutureResult fevalAsync(const std::u16string &function, RhsArgs&&…rhsArgs)

描述

异步调用带有参数和返回值的MATLAB函数。欲了解更多信息使用mexCallMATLAB制作异步请求

参数

常量std::u16string &函数

要计算的MATLAB函数或脚本的名称。将名称指定为std:: u16string.此外,您可以将此参数指定为std:: string

返回num_t

返回值的数目

const std::vector &args

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

const matlab::data::Array

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

const std::shared_ptr &output = std::shared_ptr()

流缓冲区用于存储来自MATLAB函数的标准输出。

const std::shared_ptr &error = std::shared_ptr()

流缓冲区用于存储来自MATLAB函数的错误消息。

RhsArgs&&……rhsArgs

用于函数输入的原生c++数据类型。函数宏指令接受这些c++数据类型的标量输入:保龄球int8_tint16_tint32_tint64_tuint8_tuint16_tuint32_tuint64_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语句作为文本字符串计算。

参数

常量std::u16string &语句

MATLAB语句求值

const std::shared_ptr &output

流缓冲区用于存储MATLAB语句的标准输出

const std::shared_ptr &error

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

异常

matlab:引擎::MATLABExecutionException

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

matlab:引擎::MATLABSyntaxException

MATLAB语句语法错误。

有关更多信息,请参见从MEX函数执行MATLAB语句

matlab::引擎::MATLABEngine:: evalAsync

FutureResult evalAsync(const std::u16string &str, const std::shared_ptr &output = std::shared_ptr (), const std::shared_ptr &error = std::shared_ptr ())

描述

异步地将MATLAB语句计算为字符串。欲了解更多信息使用mexCallMATLAB制作异步请求

参数

常量std::u16string &str

MATLAB语句求值

const std::shared_ptr & output

流缓冲区用于存储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基或全局工作区获取一个变量。

参数

const std::u16string& varName

MATLAB工作区中变量的名称。将名称指定为std:: u16string.此外,您可以将此参数指定为std:: string

matlab::engine::WorkspaceType WorkspaceType = matlab::engine::WorkspaceType::BASE

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

返回值

matlab::数据::数组

从MATLAB基或全局工作空间中获得的变量

异常

matlab:引擎::MATLABExecutionException

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

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

matlab::引擎::MATLABEngine:: getVariableAsync

FutureResult getVariableAsync(const std::u16string &varName, WorkspaceType WorkspaceType = WorkspaceType::BASE)

描述

异步地从MATLAB基或全局工作区获取一个变量。

参数

const 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

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

描述

将一个变量放入MATLAB基或全局工作区。如果MATLAB工作空间中存在同名变量,setVariable覆盖它。

参数

const std::u16string& varName

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

const matlab::data::Array

要在MATLAB工作区中创建的变量的值。

matlab::engine::WorkspaceType WorkspaceType = matlab::engine::WorkspaceType::BASE

MATLAB工作区(BASE或GLOBAL)将变量放入。有关更多信息,请参见全球而且matlab:引擎::WorkspaceType

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

matlab::引擎::MATLABEngine:: setVariableAsync

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

描述

异步地将一个变量放入MATLAB基或全局工作区。如果MATLAB基本工作空间中存在同名变量,setVariableAsync覆盖它。

参数

const std::u16string& varName

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

const matlab::data::Array

要在MATLAB工作区中创建的变量的值

WorkspaceType WorkspaceType = WorkspaceType::BASE

将变量放入MATLAB BASE或GLOBAL工作区。有关更多信息,请参见全球

异常

没有一个

matlab::引擎::MATLABEngine:: getProperty

matlab::data::Array getProperty(const matlab::data::Array &objectArray, size_t索引,const std::u16string &propertyName)
matlab::data::Array getProperty(const matlab::data::Array &object, const std::u16string &propertyName)

描述

获取object属性的值。如果object input参数是一个对象数组,则指定数组元素的索引,该数组元素对应于您想要获取其属性值的对象。

参数

const matlab::data::Array &objectArray

MATLAB对象数组

数组和对象

标量MATLAB对象

size_t指数

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

const std::u16string &propertyName

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

返回值

matlab::数据::数组

指定属性的值

异常

matlab:引擎::MATLABExecutionException

属性不存在。

有关更多信息,请参见MATLAB对象中的MEX函数

matlab::引擎::MATLABEngine:: getPropertyAsync

matlab::engine::FutureResult getPropertyAsync(const matlab::data::Array &objectArray, size_t索引,const std::u16string &propertyName)
matlab::engine::FutureResult getPropertyAsync(const matlab::data::Array &object, const std::u16string &propertyName)

描述

异步获取对象属性的值。如果object input参数是一个对象数组,则指定数组元素的索引,该数组元素对应于您想要获取其属性值的对象。

参数

const matlab::data::Array &objectArray

MATLAB对象数组

数组和对象

标量MATLAB对象

size_t指数

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

const std::u16string &propertyName

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

返回值

matlab:引擎::FutureResult

matlab:引擎::FutureResult用于同步操作的对象。

异常

没有一个

matlab::引擎::MATLABEngine:: setProperty

void setProperty(matlab::data::Array &objectArray, size_t索引,const std::u16string &propertyName, const matlab::data::Array &propertyValue)
void setProperty(matlab::data::Array &object, const std::u16string &propertyName, const matlab::data::Array &propertyValue)

描述

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

参数

matlab::数据::&objectArray数组

MATLAB对象数组

matlab::数据::数组对象

标量MATLAB对象

size_t指数

对象数组的从零开始的索引,指定该数组中属性值被设置的对象

const std::u16string &propertyName

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

const matlab::data::Array &propertyValue

赋给属性的值

异常

matlab:引擎::MATLABExecutionException

属性不存在。

有关更多信息,请参见MATLAB对象中的MEX函数

matlab::引擎::MATLABEngine:: setPropertyAsync

FutureResult setPropertyAsync(matlab::data::Array &objectArray, size_t索引,const std::u16string &propertyName, const matlab::data::Array &propertyValue)
FutureResult setPropertyAsync(matlab::data::Array &object, const std::u16string &propertyName, const matlab::data::Array &propertyValue)

描述

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

参数

matlab::数据::&objectArray数组

MATLAB对象数组

matlab::数据::数组对象

标量MATLAB对象

size_t指数

对象数组的从零开始的索引,指定该数组中属性值被设置的对象

const std::u16string &propertyName

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

const matlab::data::Array &propertyValue

赋给属性的值。

异常

没有一个

异常类

异常 导致

matlab:引擎::EngineException

函数中有MATLAB运行时错误或MATLAB无法启动。

matlab:引擎::MATLABSyntaxException

MATLAB函数有语法错误。

matlab:引擎::MATLABExecutionException

MATLAB函数或语句中存在MATLAB运行时错误。

matlab:引擎::TypeConversionException

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

有关更多信息,请参见在MEX函数中捕获异常

相关的话题