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.

C++ MEX API

Nota

La API de MEX de C++ no es compatible con el. No puede mezclar estas API en un archivo MEX.

La API de MEX de C++ le permite crear aplicaciones que aprovechan las características de C++ 11, como la semántica de movimiento, el control de excepciones y la administración de memoria.

matlab::mex::FunctionClase base para funciones MEX de C++
matlab::mex::ArgumentListContenedor para entradas y salidas de funciones de C++ MEX
matlab::engine::MATLABEngineAPI de motor de definición de clase

matlab::mex::Function

Todas las implementaciones de archivos MEX son clases derivadas de.matlab::mex::Function

std::shared_ptr<matlab::engine::MatlabEngine> getEngine()Obtenga el puntero al objetoMATLABEngine
void mexLock()Evitar la limpieza del archivo MEX de la memoria
void mexUnLock()Permitir la limpieza del archivo MEX de la memoria
std::u16string getFunctionName()Obtenga el nombre de la función MEX actual

matlab::mex::ArgumentList

Los argumentos de la función MEX pasados a través de la clase son contenedores. es una gama completa de la colección subyacente de matrices.operator()MexFunctionmatlab::mex::ArgumentListArgumentList El objeto admite las siguientes funciones.ArgumentList

operator[]Permite la indexación en los elementos de un.[]ArgumentList
begin()Iniciar iterador.
end()Iterador final.
size()Devuelve el número de elementos de la lista de argumentos. Utilice esta función para comprobar el número de entradas y salidas especificadas en el sitio de llamada.
empty()Devuelve un valor lógico que indica si la lista de argumentos está vacía ().size() == 0

API del motor de C++

Acceda a funciones, variables y objetos mediante la API descrita en las secciones siguientes.MATLAB®matlab::engine::MATLABEngine Para llamar a las funciones, obtenga un puntero compartido devuelto por la función.matlab::engine::MATLABEnginematlab::mex::Function::getEngine Por ejemplo:

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

Utilice este puntero para llamar a las funciones del motor. Por ejemplo:

matlabPtr->feval(...);

Las funciones del motor de llamadas solo se encuentran en el mismo subproceso que la clase.MexFunction

matlab::engine::MATLABEngine::fevalLlame a funciones con argumentosMATLAB
matlab::engine::MATLABEngine::fevalAsyncFunción de llamada con argumentos y valores devueltos asincrónicamente.MATLAB
matlab::engine::MATLABEngine::evalEvalúe las sentencias en el espacio de trabajo baseMATLAB
matlab::engine::MATLABEngine::evalAsyncEvalúe las sentencias en el espacio de trabajo base de forma asincrónicaMATLAB
matlab::engine::MATLABEngine::getVariableObtenga variables del espacio de trabajo base o globalMATLAB
matlab::engine::MATLABEngine::getVariableAsyncObtenga variables del espacio de trabajo base o global de forma asincrónicaMATLAB
matlab::engine::MATLABEngine::setVariableColoque las variables en el espacio de trabajo base o globalMATLAB
matlab::engine::MATLABEngine::setVariableAsyncColoque las variables en el espacio de trabajo base o global asincrónicamenteMATLAB
matlab::engine::MATLABEngine::getPropertyObtener propiedad de objeto
matlab::engine::MATLABEngine::getPropertyAsyncObtener la propiedad de objeto asincrónicamente
matlab::engine::MATLABEngine::setPropertyEstablecer propiedad de objeto
matlab::engine::MATLABEngine::setPropertyAsyncEstablecer la propiedad del objeto asincrónicamente

matlab::engine::MATLABEngine::feval

std::vector<matlab::data::Array> feval(const std::u16string &function,    const size_t numReturned,    const std::vector<matlab::data::Array> &args,    const std::shared_ptr<matlab::engine::StreamBuffer> &output =         std::shared_ptr<matlab::engine::StreamBuffer>,    const std::shared_ptr<matlab::engine::StreamBuffer> &error =         std::shared_ptr<matlab::engine::StreamBuffer>())
matlab::data::Array feval(const std::u16string &function,     const std::vector<matlab::data::Array> &args,     const std::shared_ptr<matlab::engine::StreamBuffer> &output =         std::shared_ptr<matlab::engine::StreamBuffer>(),    const std::shared_ptr<matlab::engine::StreamBuffer> &error =         std::shared_ptr<matlab::engine::StreamBuffer>())
matlab::data::Array feval(const std::u16string &function,    const matlab::data::Array &arg,    const std::shared_ptr<matlab::engine::StreamBuffer> &output =         std::shared_ptr<matlab::engine::StreamBuffer>(),    const std::shared_ptr<matlab::engine::StreamBuffer> &error =         std::shared_ptr<matlab::engine::StreamBuffer>())
ResultType feval(const std::u16string &function,    const std::shared_ptr<matlab::engine::StreamBuffer> &output,    const std::shared_ptr<matlab::engine::StreamBuffer> &error,    RhsArgs&&... rhsArgs )
ResultType feval(const std::u16string &function,    RhsArgs&&... rhsArgs)

Descripción

Funciones de llamada de funciones MEX.MATLAB Utilice para llamar a las funciones con argumentos pasados de las funciones MEX y para devolver un resultado de la función MEX.fevalMATLABMATLAB

Las entradas y salidas son tipos definidos por el.API de datos de MATLAB También hay una sintaxis para admitir tipos de C++ nativos.

Parámetros

const std::u16string &function

Nombre de la función o secuencia de comandos que se evaluará.MATLAB Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

const size_t nlhs

Número de valores devueltos.

const std::vector<matlab::data::Array> &args

Varios argumentos de entrada para pasar a la función en un.MATLABstd::vector El vector se convierte en una matriz de columnas.MATLAB

const matlab::data::Array &arg

Argumento de entrada único para pasar a la función.MATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>()

Búfer de secuencia utilizado para almacenar la salida estándar de la función.MATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>()

Búfer de secuencia utilizado para almacenar el mensaje de error de la función.MATLAB

RhsArgs&&... rhsArgs

Tipos de datos nativos de C++ utilizados para entradas de función. acepta las entradas escalares de estos tipos de datos de C++:,,,,,,,,,,.fevalboolint8_tint16_tint32_tint64_tuint8_tuint16_tuint32_tuint64_tfloatdouble

Valor devuelto

std::vector<matlab::data::Array>

Salidas devueltas desde la función.MATLAB

matlab::data::Array

Salida única devuelta de la función.MATLAB

ResultType

Salida devuelta de la función como un tipo especificado por el usuario.MATLAB Puede ser un si se devuelven varios argumentos.std::tuple

Excepciones

matlab::engine::MATLABException

Hay un error en tiempo de ejecución en la función.MATLAB

matlab::engine::TypeConversionException

El resultado de una función no se puede convertir al tipo especificado.MATLAB

matlab::engine::MATLABSyntaxException

Hay un error de sintaxis en la función.MATLAB

Para obtener más información, consulteFunciones de llamada de funciones MEXMATLAB

matlab::engine::MATLABEngine::fevalAsync

FutureResult<std::vector<matlab::data::Array>> fevalAsync(const std::u16string &function,    const size_t numReturned,    const std::vector<matlab::data::Array> &args,    const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(),    const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())
FutureResult<matlab::data::Array> fevalAsync(const std::u16string &function,    const std::vector<matlab::data::Array> &args,    const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(),    const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())
FutureResult<matlab::data::Array> fevalAsync(const std::u16string &function,    const matlab::data::Array &arg,    const std::shared_ptr<matlab::engine::StreamBuffer> & output = std::shared_ptr<matlab::engine::StreamBuffer>(),    const std::shared_ptr<matlab::engine::StreamBuffer> & error = std::shared_ptr<matlab::engine::StreamBuffer>())
FutureResult<ResultType> fevalAsync(const std::u16string &function,    const std::shared_ptr<matlab::engine::StreamBuffer> &output,    const std::shared_ptr<matlab::engine::StreamBuffer> &error,    RhsArgs&&... rhsArgs)
FutureResult<ResultType> fevalAsync(const std::u16string &function,    RhsArgs&&... rhsArgs)

Descripción

Función de llamada con argumentos y valores devueltos asincrónicamente.MATLAB

Parámetros

const std::u16string &function

Nombre de la función o secuencia de comandos que se evaluará.MATLAB Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

const size_t numReturned

Número de valores devueltos

const std::vector<matlab::data::Array> &args

Varios argumentos de entrada para pasar a la función en un.MATLABstd::vector El vector se convierte en una matriz de columnas.MATLAB

const matlab::data::Array arg

Argumento de entrada único para pasar a la función.MATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>()

Búfer de secuencia utilizado para almacenar la salida estándar de la función.MATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>()

Búfer de secuencia utilizado para almacenar el mensaje de error de la función.MATLAB

RhsArgs&&... rhsArgs

Tipos de datos nativos de C++ utilizados para entradas de función. acepta las entradas escalares de estos tipos de datos de C++:,,,,,,,,,,.fevalboolint8_tint16_tint32_tint64_tuint8_tuint16_tuint32_tuint64_tfloatdouble

Valor devuelto

FutureResult

Un objeto utilizado para obtener el resultado de llamar a la función.FutureResultMATLAB

Excepciones

Ninguno

matlab::engine::MATLABEngine::eval

void eval(const std::u16string &statement,    const std::shared_ptr<matlab::engine::StreamBuffer> &output =         std::shared_ptr<matlab::engine::StreamBuffer> (),    const std::shared_ptr<matlab::engine::StreamBuffer> &error =         std::shared_ptr<matlab::engine::StreamBuffer> ())

Descripción

Evalúe una instrucción como una cadena de texto en el área de trabajo de la función de llamada.MATLAB

Parámetros

const std::u16string &statement

instrucción para evaluarMATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> &output

Búfer de secuencia utilizado para almacenar la salida estándar de la instrucciónMATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> &error

Búfer de secuencia utilizado para almacenar el mensaje de error desde el comandoMATLAB

Excepciones

matlab::engine::MATLABExecutionException

Hay un error en tiempo de ejecución en la instrucción.MATLAB

matlab::engine::MATLABSyntaxException

Hay un error de sintaxis en la instrucción.MATLAB

Para obtener más información, consulteEjecutar sentencias de la función MEXMATLAB

matlab::engine::MATLABEngine::evalAsync

FutureResult<void> evalAsync(const std::u16string &str,    const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer> (),    const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer> ())

Descripción

Evalúe una instrucción como una cadena de forma asincrónica.MATLAB

Parámetros

const std::u16string &str

instrucción para evaluarMATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> & output

Búfer de secuencia utilizado para almacenar la salida estándar de la instrucción.MATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> & error

Búfer de secuencia utilizado para almacenar el mensaje de error desde el comando.MATLAB

Valor devuelto

matlab::engine::FutureResult

Un objeto que se usa para esperar la finalización de la instrucción.FutureResultMATLAB

Excepciones

Ninguno

matlab::engine::MATLABEngine::getVariable

matlab::data::Array getVariable(const std::u16string &varName,     WorkspaceType workspaceType = WorkspaceType::BASE)

Descripción

Obtenga una variable desde el espacio de trabajo base o global.MATLAB

Parámetros

const std::u16string& varName

Nombre de una variable en el área de trabajo.MATLAB Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE

espacio de trabajo (BASE o GLOBAL) para obtener la variable.MATLAB Para obtener más información, consulte y.globalmatlab::engine::WorkspaceType

Valor devuelto

matlab::data::Array

La variable obtenida del espacio de trabajo base o globalMATLAB

Excepciones

matlab::engine::MATLABExecutionException

La variable solicitada no existe en el espacio de trabajo base o global especificado.MATLAB

Para obtener más información, consulteEstablecer y obtener variables de MEXMATLAB

matlab::engine::MATLABEngine::getVariableAsync

FutureResult<matlab::data::Array> getVariableAsync(const std::u16string &varName,     WorkspaceType workspaceType = WorkspaceType::BASE)

Descripción

Obtener una variable del espacio de trabajo base o global de forma asincrónica.MATLAB

Parámetros

const std::u16string& varName

Nombre de la variable en el espacio de trabajo.MATLAB Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

WorkspaceType workspaceType = WorkspaceType::BASE

espacio de trabajo (BASE o GLOBAL) para obtener la variable.MATLAB Para obtener más información, consulte.global

Valor devuelto

matlab::engine::FutureResult

Un objeto que puede utilizar para obtener la variable obtenida del espacio de trabajo como un.FutureResultMATLABmatlab.data.Array

Excepciones

Ninguno

matlab::engine::MATLABEngine::setVariable

void setVariable(const std::u16string &varName,    const matlab::data::Array &var,    WorkspaceType workspaceType = WorkspaceType::BASE)

Descripción

Coloque una variable en el espacio de trabajo base o global.MATLAB Si existe una variable con el mismo nombre en el espacio de trabajo, sobrescribirá.MATLABsetVariable

Parámetros

const std::u16string& varName

Nombre de la variable que se creará en el espacio de trabajo.MATLAB Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

const matlab::data::Array var

Valor de la variable que se creará en el espacio de trabajo.MATLAB

matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE

espacio de trabajo (BASE o GLOBAL) para poner la variable en.MATLAB Para obtener más información, consulte y.globalmatlab::engine::WorkspaceType

Para obtener más información, consulteEstablecer y obtener variables de MEXMATLAB

matlab::engine::MATLABEngine::setVariableAsync

FutureResult<void> setVariableAsync(const std::u16string &varName,    const matlab::data::Array var,    WorkspaceType workspaceType = WorkspaceType::BASE)

Descripción

Coloque una variable en el espacio de trabajo base o global de forma asincrónica.MATLAB Si existe una variable con el mismo nombre en el espacio de trabajo base, sobrescribirá.MATLABsetVariableAsync

Parámetros

const std::u16string& varName

Nombre de la variable que se creará en el espacio de trabajo.MATLAB Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

const matlab::data::Array var

Valor de la variable que se creará en el espacio de trabajoMATLAB

WorkspaceType workspaceType = WorkspaceType::BASE

Coloque la variable en el espacio de trabajo BASE o GLOBAL.MATLAB Para obtener más información, consulte.global

Excepciones

Ninguno

matlab::engine::MATLABEngine::getProperty

matlab::data::Array getProperty(const matlab::data::Array &objectArray,     size_t index,     const std::u16string &propertyName)
matlab::data::Array getProperty(const matlab::data::Array &object,     const std::u16string &propertyName)

Descripción

Obtener el valor de una propiedad de objeto. Si el argumento de entrada de objeto es una matriz de objetos, especifique el índice del elemento de matriz que corresponde al objeto cuyo valor de propiedad desea obtener.

Parámetros

const matlab::data::Array &objectArray

Matriz de objetosMATLAB

const matlab::data::Array &object

Objeto escalarMATLAB

size_t index

Índice de base cero en la matriz de objetos, especificando el objeto en esa matriz cuyo valor de propiedad se devuelve

const std::u16string &propertyName

Nombre de la propiedad. Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

Valor devuelto

matlab::data::Array

El valor de la propiedad con nombre

Excepciones

matlab::engine::MATLABExecutionException

La propiedad no existe.

Para obtener más información, consulteLos objetos en funciones MEXMATLAB

matlab::engine::MATLABEngine::getPropertyAsync

matlab::engine::FutureResult<matlab::data::Array> getPropertyAsync(const matlab::data::Array &objectArray,     size_t index,     const std::u16string &propertyName)
matlab::engine::FutureResult<matlab::data::Array> getPropertyAsync(const matlab::data::Array &object,    const std::u16string &propertyName)

Descripción

Obtener el valor de una propiedad de objeto de forma asincrónica. Si el argumento de entrada de objeto es una matriz de objetos, especifique el índice del elemento de matriz que corresponde al objeto cuyo valor de propiedad desea obtener.

Parámetros

const matlab::data::Array &objectArray

Matriz de objetosMATLAB

const matlab::data::Array &object

Objeto escalarMATLAB

size_t index

Índice de base cero en la matriz de objetos, especificando el objeto en esa matriz cuyo valor de propiedad se devuelve

const std::u16string &propertyName

Nombre de la propiedad. Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

Valor devuelto

matlab::engine::FutureResult

objeto que se utiliza para sincronizar la operación.matlab::engine::FutureResult

Excepciones

Ninguno

matlab::engine::MATLABEngine::setProperty

void setProperty(matlab::data::Array &objectArray,        size_t index,     const std::u16string &propertyName,     const matlab::data::Array &propertyValue)
void setProperty(matlab::data::Array &object,      const std::u16string &propertyName,     const matlab::data::Array &propertyValue)

Descripción

Establezca el valor de una propiedad de objeto. Si el argumento de entrada de objeto es una matriz de objetos, especifique el índice del elemento de matriz que corresponde al objeto cuyo valor de propiedad desea establecer.

Parámetros

matlab::data::Array &objectArray

Matriz de objetosMATLAB

matlab::data::Array &object

Objeto escalarMATLAB

size_t index

Índice de base cero en la matriz de objetos, especificando el objeto en esa matriz cuyo valor de propiedad se establece

const std::u16string &propertyName

Nombre de la propiedad que se establecerá. Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

const matlab::data::Array &propertyValue

Valor asignado a la propiedad

Excepciones

matlab::engine::MATLABExecutionException

La propiedad no existe.

Para obtener más información, consulteLos objetos en funciones MEXMATLAB

matlab::engine::MATLABEngine::setPropertyAsync

FutureResult<void> setPropertyAsync(matlab::data::Array &objectArray,        size_t index,     const std::u16string &propertyName,     const matlab::data::Array &propertyValue)
FutureResult<void> setPropertyAsync(matlab::data::Array &object,  const std::u16string &propertyName,  const matlab::data::Array &propertyValue)

Descripción

Establezca el valor de una propiedad de objeto de forma asincrónica. Si el argumento de entrada de objeto es una matriz de objetos, especifique el índice del elemento de matriz que corresponde al objeto cuyo valor de propiedad desea establecer.

Parámetros

matlab::data::Array &objectArray

Matriz de objetosMATLAB

matlab::data::Array &object

Objeto escalarMATLAB

size_t index

Índice de base cero en la matriz de objetos, especificando el objeto en esa matriz cuyo valor de propiedad se establece

const std::u16string &propertyName

Nombre de la propiedad que se establecerá. Especifique el nombre como un.std::u16string Además, puede especificar este parámetro como un.std::string

const matlab::data::Array &propertyValue

Valor asignado a la propiedad.

Excepciones

Ninguno

Clases de excepción

ExcepciónCausa

matlab::engine::EngineException

Hay un error en tiempo de ejecución en la función o no se inicia.MATLABMATLAB

matlab::engine::MATLABSyntaxException

Hay un error de sintaxis en la función.MATLAB

matlab::engine::MATLABExecutionException

Hay un error en tiempo de ejecución en la función o instrucción.MATLABMATLAB

matlab::engine::TypeConversionException

El resultado de la función no se puede convertir al tipo especificadoMATLAB

Para obtener más información, consulteDetectar excepciones en la función MEX

Temas relacionados