Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Funciones de llamada de funciones MEXMATLAB

Funciones de llamada de funciones MEX utilizando la función. le permite pasar argumentos de funciones MEX a funciones y devolver los resultados a la función MEX.MATLAB®matlab::engine::MATLABEngine::fevalfevalMATLAB

Los siguientes fragmentos de código requieren estas definiciones para usar el y el.matlab::data::ArrayFactoryAPI del motor de C++

matlab::data::ArrayFactory factory; std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine();

Salida única

Este ejemplo llama a la función con las siguientes entradas:MATLABsqrt

  • La función, nombre pasado como una cadena UTF16

  • Las entradas de la función, especificadas como unsqrtmatlab::data::Array

El valor devuelto a la función MEX es un cuatro elementos que contiene cuatro valores para la raíz cuadrada de la matriz de entrada.matlab::data::Array

En el ejemplo se mueve el valor devuelto a a, que proporciona iteradores utilizados en el bucle basado en intervalo que crea una matriz de tipo a partir de los resultados devueltos por la función.matlab::data::TypedArrayfordoubleMATLABsqrt

// Define input and output arguments
matlab::data::Array args({
    factory.createArray<double>({ 1, 4 },{ 1, 2, 3, 4 }) });
matlab::data::Array result;
 // Call feval and return 1 argument
result = matlabPtr->feval(u"sqrt", args);
matlab::data::TypedArray<double> returnedValues(std::move(result));
 // Create native array
double dataArray[4];
int i = 0;
for (auto elem : returnedValues) {
    dataArray[i] = elem;
    i++;
}

Múltiples salidas

Algunas funciones devuelven diferentes números de salidas en función de cómo se llame a la función.MATLAB Puede especificar el número de argumentos devueltos al llamar a una función desde una función MEX.MATLAB

Este código llama a la función con las siguientes entradas:MATLABgcd

  • El nombre de la función pasa como una cadena UTF16

  • Número de salidas devueltas por la función, especificadas como a.MATLABconst size_t

  • Las entradas de la función, especificadas como una de los elementos.gcdstd::vectormatlab::data::Array

El valor devuelto es un elemento que contiene tres elementos.std::vectormatlab::data::Array

// Define arguments
std::vector<matlab::data::Array> args({
    factory.createScalar<int16_t>(30),
    factory.createScalar<int16_t>(56)});
const size_t numReturned = 3;
std::vector<matlab::data::Array> result;

// Call feval and return 3 arguments
result = matlabPtr->feval(u"gcd", numReturned, args);

Consulte también

Temas relacionados