主要内容

传递MEX函数数据的数据类型

MATLAB®Data API支万博1manbetx持数组类型,使MEX函数能够在MATLAB之间传递特定的数据类型。有关其他数组类型的信息,请参见MATLAB数据API

最常见的数组类型是matlab::数据::数组.更具体的类型提供额外的功能。例如,matlab::数据::TypedArray < T >提供迭代器支持和万博1manbetxmatlab:: data:: CharArray提供ASCII和UTF16类型的转换器。

下面几节展示如何使用MATLAB Data API定义输入和输出类型。假设MEX框架的输入和输出定义如下所示。使用matlab:: data:: ArrayFactory创建输出数组。

class MexFunction: public matlab::mex::Function {public: void operator()(matlab::mex::ArgumentList输出,matlab::mex::ArgumentList输入){matlab::data::ArrayFactory factory;...}

类型的数组

使用matlab::数据::TypedArray < T >定义特定类型,如数字和逻辑值。例如,调用myMexFcn从MATLAB。

M = [-2 2 6 8];结果= myMexFcn (m);

分配MATLAB类型的输入在MEX函数中。

matlab::data::TypedArray doubleArray = input [0];

返回指定类型的输出在MATLAB:

输出[0]=工厂。createArray <二> ({1,4},{-2.0,2.0,6.0,8.0});

字符数组

使用matlab:: data:: CharArray向MEX函数传递字符数组。例如,调用myMexFcn从MATLAB的一个字符向量。

结果= myMexFcn (的特征向量);

分配MATLAB类型的输入字符在MEX函数中。

matlab::data::CharArray charVector2 = input [0];

返回指定类型的输出字符在MATLAB。

输出[0]=工厂。createCharArray(特征向量);

字符串数组

使用matlab::数据::TypedArray < MATLABString >向MEX函数传递字符串数组或从MEX函数传递字符串数组。例如,调用myMexFcn从MATLAB的字符串数组。

结果= myMexFcn ([“数组”“的”“弦”]);

分配MATLAB类型的输入字符串在MEX函数中。

matlab::data::TypedArray stringArray = input [0];

返回指定类型的输出字符串在MATLAB。

输出[0]=工厂。createArray ({1,3}, {u“数组”u“的”,你“弦”});

细胞数组

使用matlab:: data:: CellArray向MEX函数传递单元格数组。例如,调用myMexFcn从MATLAB与单元阵列。

结果= myMexFcn ({MATLAB单元阵列的, (1.2 - 2.2;3.2 - 4.2]});

分配MATLAB类型的输入细胞在MEX函数中。

matlab::data::CellArray inCellArray2 = input [0];

返回指定类型的输出细胞在MATLAB。

输出[0]=工厂。createCellArray({1,2},工厂。createCharArray("MATLAB Cell Array"), factory。createArray <二> ({2,},{1.2,3.2,2.2,4.2}));

在定义2-D数组时,请注意c++和MATLAB之间的行主和列主顺序差异。

结构数组

使用matlab:: data:: StructArray在MEX函数之间传递结构。例如,调用myMexFcn从MATLAB中得到一个结构。

st.Name =“颜色”;st.Value = uint8([1 0 1]); / /结果= myMexFcn (st);

分配MATLAB类型的输入结构体在MEX函数中。

matlab::data::StructArray inStructArray = input [0];

返回指定类型的输出结构体在MATLAB。

StructArray S =工厂。createStructArray({1,1}, {"Name","Value"});S[0][“Name”]= factory.createCharArray(“颜色”);S[0](“价值”)=工厂。createArray({1, 3}, {1, 0, 1});输出[0]= S;

MATLAB对象

使用matlab::数据::数组向MEX函数传递对象或从MEX函数传递对象。例如,调用myMexFcn使用用户定义类的对象命名MyClass

classdefMyClass属性MeanValue = 0.5结束结束
obj = MyClass;

分配MATLAB类型的输入MyClass在MEX函数中。

matlab::data::Array obj = input [0];

假设MyClass定义一个名为MeanValue它包含一个标量.使用方法获取属性值matlab::引擎::MATLABEngine:: getProperty

matlab::data::TypedArray meanValue = matlabPtr->getProperty(obj, u" meanValue ");double m = meanValue[0];

使用matlab::引擎::MATLABEngine:: setProperty并将对象作为a返回到MATLABmatlab::数据::数组

matlabPtr - > setProperty (obj, u“MeanValue factory.createScalar <二> (1.02));输出[0]= obj;

有关如何使用MATLAB对象的示例,请参见MATLAB对象在MEX函数

另请参阅

||||

相关的话题