Main Content

Tipos de datos para pasar los datos de la función MEX

La API de datos admite tipos de matriz que permiten a las funciones MEX pasar tipos de datos específicos desde y hacia.MATLAB®MATLAB Para obtener información sobre los tipos de matrices adicionales, consulte.API de datos de MATLAB

El tipo más general de array es el.matlab::data::Array Los tipos más específicos proporcionan funcionalidad adicional. Por ejemplo, proporciona compatibilidad con iterador y proporciona convertidores para tipos ASCII y UTF16.matlab::data::TypedArray<T>matlab::data::CharArray

En las secciones siguientes se muestra cómo definir los tipos de entrada y salida mediante la API de datos.MATLAB Suponga un marco MEX con entradas y salidas definidas como se muestra en la siguiente definición de clase. Utilice la para crear matrices de salida.matlab::data::ArrayFactory

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

Matrices con tipo

Se usa para definir tipos específicos, como valores numéricos y lógicos.matlab::data::TypedArray<T> Por ejemplo, llame desde.myMexFcnMATLAB

m = [-2 2 6 8]; result = myMexFcn(m);

Asigne la entrada de tipo en la función MEX.MATLABdouble

matlab::data::TypedArray<double> doubleArray = inputs[0];

Devolver la salida a ser de tipo en:doubleMATLAB

outputs[0] = factory.createArray<double>({ 1,4 }, { -2.0, 2.0, 6.0, 8.0 });

Matrices de caracteres

Se usa para pasar matrices de caracteres a y desde funciones MEX.matlab::data::CharArray Por ejemplo, llame desde con un vector de caracteres.myMexFcnMATLAB

result = myMexFcn('Character vector');

Asigne la entrada de tipo en la función MEX.MATLABchar

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

Devolver la salida a ser de tipo in.charMATLAB

outputs[0] = factory.createCharArray("Character vector");

Matrices de cadenas

Se usa para pasar matrices de cadenas a y desde funciones MEX.matlab::data::TypedArray<MATLABString> Por ejemplo, llame desde con una matriz de cadenas.myMexFcnMATLAB

result = myMexFcn(["Array", "of", "strings"]);

Asigne la entrada de tipo en la función MEX.MATLABstring

matlab::data::TypedArray<matlab::data::MATLABString> stringArray = inputs[0];

Devolver la salida a ser de tipo in.stringMATLAB

outputs[0] = factory.createArray({ 1,3 }, { u"Array", u"of", u"strings" });

Matrices de celdas

Utilícelas para pasar matrices de celdas a y desde funciones MEX.matlab::data::CellArray Por ejemplo, llame desde con una matriz de celdas.myMexFcnMATLAB

result = myMexFcn({'MATLAB cell array', [1.2 2.2; 3.2 4.2]});

Asigne la entrada de tipo en la función MEX.MATLABcell

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

Devolver la salida a ser de tipo in.cellMATLAB

outputs[0] = factory.createCellArray({ 1,2 },                 factory.createCharArray("MATLAB Cell Array"),                 factory.createArray<double>({ 2,2 }, { 1.2, 3.2, 2.2, 4.2 }));

Tenga en cuenta la diferencia de ordenación de la fila principal frente a la columna principal entre C++ y al definir matrices 2-D.MATLAB

Matrices de estructura

Utilice para pasar las estructuras a y desde las funciones MEX.matlab::data::StructArray Por ejemplo, llame desde con una estructura.myMexFcnMATLAB

st.Name = 'Color'; st.Value = uint8([1 0 1]); result = myMexFcn(st);

Asigne la entrada de tipo en la función MEX.MATLABstruct

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

Devolver la salida a ser de tipo in.structMATLAB

matlab::data::StructArray S = factory.createStructArray({ 1,1 }, { "Name","Value" }); S[0]["Name"] = factory.createCharArray("Color"); S[0]["Value"] = factory.createArray<uint8_t>({ 1, 3 }, { 1, 0, 1 }); outputs[0] = S;

ObjetosMATLAB

Se usa para pasar objetos a y desde funciones MEX.matlab::data::Array Por ejemplo, llame desde con un objeto de la clase definida por el usuario nombrada.myMexFcnMATLABMyClass

classdef MyClass     property          MeanValue = 0.5     end end
obj = MyClass;

Asigne la entrada de tipo en la función MEX.MATLABMyClass

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

Supongamos que define una propiedad llamada que contiene un escalar.MyClassMeanValuedouble Obtenga el valor de propiedad mediante.matlab::engine::MATLABEngine::getProperty

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

Establecer el valor de propiedad mediante y devolver el objeto como un.matlab::engine::MATLABEngine::setPropertyMATLABmatlab::data::Array

matlabPtr->setProperty(obj, u"MeanValue", factory.createScalar<double>(1.02)); outputs[0] = obj;

Para ver un ejemplo de cómo trabajar con objetos, vea.MATLABLos objetos en funciones MEXMATLAB

Consulte también

| | | |

Temas relacionados