主要内容

将枚举传递给MATLAB从C + +

调用MATLAB®需要MATLAB枚举成员作为输入的函数,将枚举成员定义为matlab:: data:: EnumArray。使用matlab:: data:: ArrayFactory创建枚举数组。的matlab:: data:: EnumArray包含MATLAB类名和一个或多个枚举成员。也可以将数组作为变量传递给MATLAB工作空间MATLABEngine: setVariable

请注意

传递matlab:: data:: EnumArray对于MATLAB,命名的MATLAB类必须存在并且在MATLAB路径上。

假设您定义了以下内容TextString在MATLAB。这个类定义了一个属性,该属性的类型为指定的枚举类输入TextColor。的TextString类构造函数接受两个输入参数:

  • Str—1 × n的字符数组

  • 颜色的枚举成员输入TextColor类。

classdefTextString属性Str(: 1)字符颜色输入TextColor结束方法函数obj = TextString(str,color)如果Nargin == 2 obj。Str = Str;obj。Color =颜色;结束结束结束结束

下面是如何定义MATLAB输入TextColor枚举类中。

classdef输入TextColor枚举红绿蓝结束结束

这个MATLAB语句创建一个TextString对象,方法是将字符向量和枚举成员传递给类构造函数。

T = TextString()'任意文本字符串', TextColor.Blue);

下面的示例代码创建了一个MATLABTextString对象并显示属性值。创建TextString对象:

  • 定义一个matlab:: data:: CharArray的MATLAB字符向量参数。

  • 定义一个matlab:: data:: EnumArray的MATLAB输入TextColor。蓝色的枚举参数。

  • 将参数vector传递给MATLABEngine:函数宏指令

  • 使用获取属性值MATLABEngine: getProperty并显示这些值。

请注意

这个例子需要您定义MATLABTextString输入TextColor这里描述的类。这些类必须位于本示例使用的共享MATLAB会话的路径上。

#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include  void enumArray(){使用命名空间matlab::engine;//连接到命名的共享MATLAB会话:// MATLAB -r " MATLAB .engine. shareengine ('myMatlabEngine')"字符串会话(u“myMatlabEngine”);std::unique_ptr matlabPtr = connectMATLAB(session);//创建MATLAB数据数组工厂MATLAB::data::ArrayFactory factory;//创建枚举数组createEnumArray({1,1}, "TextColor", {"Blue"});//创建参数向量std::vector args({factory;createCharArray("任意文本字符串"),enumColor});//调用MATLAB TextString创建对象MATLAB::data::Array T = matlabPtr->feval(u"TextString", args);//获取Str属性的值matlab::data::CharArray c = matlabPtr->getProperty(T, u"Str");std::cout << "Str属性值:" << c.toAscii() << std::endl; // Get the value of the Color property matlab::data::EnumArray col = matlabPtr->getProperty(T, u"Color"); std::cout << "Color property class: " << col.getClassName() << std::endl; std::cout << "Color property value: " << std::string(col[0]) << std::endl; }

下面是程序输出。

颜色属性类:TextColor颜色属性值:Blue

有关如何设置和构建c++引擎程序的信息,请参见构建c++引擎程序

另请参阅

||

相关的话题