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.

Establecer y obtener variables de MEXMATLAB

Las funciones MEX pueden poner variables en los espacios de trabajo base y globales durante la ejecución de la función MEX.MATLAB® Las funciones MEX pueden obtener variables de los espacios de trabajo base y globales durante la ejecución de la función MEX.MATLAB

Para poner las variables en el espacio de trabajo base o global de las funciones MEX utilice la función.MATLABmatlab::engine::MATLABEngine::setVariable

Para obtener variables desde el espacio de trabajo base o global y llevarlos a una función MEX, utilice la función.MATLABmatlab::engine::MATLABEngine::getVariable

Obtener variable de WorkspaceMATLAB

Supongamos que hay una variable denominada en el área de trabajo base.resultMATLAB Esta variable es de tipo.double

result =  1^3 + 5^3 + 3^3;

Para obtener la variable del área de trabajo, llame, que devuelve la variable como un.resultMATLABgetVariablematlab::data::Array

#include "mex.hpp" #include "mexAdapter.hpp"  using matlab::mex::ArgumentList; using namespace matlab::engine; using namespace matlab::data;  class MexFunction : public matlab::mex::Function {     ArrayFactory factory;     std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine(); public:     void operator()(ArgumentList outputs, ArgumentList inputs) {         Array result = matlabPtr->getVariable(u"result");         double mexResult = std::move(result[0]);     } };

La variable es una copia compartida de la variable en el espacio de trabajo.resultresultMATLAB El uso al asignar en la función MEX a la variable nativa no comparte el valor con la variable en el espacio de trabajo.std::moveresultdoublemexResultMATLAB

Put variable en WorkspaceMATLAB

Las funciones MEX pueden poner variables en el espacio de trabajo base o global.MATLAB Si existe una variable con el mismo nombre en el espacio de trabajo especificado, sobrescribirá.setVariable

Por ejemplo, puede hacer que una variable esté disponible desde el espacio de trabajo global para que cualquier función pueda definir esta variable global.MATLABMATLAB

Esta función MEX crea una variable global llamada.mexGlobal El valor de esta variable es.153

#include "mex.hpp" #include "mexAdapter.hpp"  using matlab::mex::ArgumentList; using namespace matlab::engine; using namespace matlab::data;  class MexFunction : public matlab::mex::Function {     ArrayFactory factory;     std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine(); public:     void operator()(ArgumentList outputs, ArgumentList inputs) {         Array val = factory.createScalar(153.0);         matlabPtr->setVariable(u"mexGlobal", val, WorkspaceType::GLOBAL);     } };

Para acceder a la variable global desde funciones, utilice la palabra clave para definir la variable como global en el espacio de trabajo de la función.MATLABglobal

function testMexGlobal    global mexGlobal    localVar = 1^3 + 5^3 + 3^3;    if localVar == mexGlobal       disp('Global found')    end end

Las variables globales se comparten entre todas las funciones que declaran la variable como global. Cualquier cambio de valor a esa variable, en cualquier función, es visible para todas las funciones que la declaran como global.

Establecer y obtener código de ejemplo de variable

Para obtener un ejemplo completo que utiliza, descargue estos dos archivos y siga las instrucciones de los archivos para compilar y ejecutar la función MEX.matlab::engine::MATLABEngine::getVariable

mexgetarray.cpp Y mexgetarray.hpp.

Consulte también

Temas relacionados