主要内容

通过枚举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,颜色)如果Nargin == 2 obj。Str = Str;obj。颜色=颜色;结束结束结束结束

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

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

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

T = TextString (“任何文本字符串”, TextColor.Blue);

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

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

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

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

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

请注意

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

#include " matlabdata .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工厂;//创建枚举数组自动枚举颜色=工厂。createEnumArray({1,1}, "TextColor", {"Blue"});//创建参数vector std::vector args({factory. data:::Array);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; }

这是程序输出。

Str属性值:任何文本字符串颜色属性类:TextColor颜色属性值:蓝色

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

另请参阅

||

相关的话题