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 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::fevalfeval
MATLAB
Los siguientes fragmentos de código requieren estas definiciones para usar el y el.matlab::data::ArrayFactory
API del motor de C++
matlab::data::ArrayFactory factory; std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine();
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 unsqrt
matlab::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::TypedArray
for
double
MATLABsqrt
// 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++; }
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.gcd
std::vector
matlab::data::Array
El valor devuelto es un elemento que contiene tres elementos.std::vector
matlab::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);
matlab::engine::MATLABEngine::feval