Main Content

Pasar variables desde a C++MATLAB

Pase variables desde el espacio de trabajo base o global al programa de C++ mediante las funciones miembro y.MATLAB®matlab::engine::MATLABEnginegetVariablegetVariableAsync Devolver la variable a C++ como un.matlab::data::Array

Para obtener información sobre cómo configurar y compilar programas de motor de C++, vea.Compilar programas de motor de C++

Traer resultado del cálculo de MATLAB en C++

Este código de ejemplo realiza un cálculo al usar y obtiene los resultados mediante.MATLABMATLABEngine::evalMATLABEngine::getVariable

La función convierte un punto en coordenadas cartesianas a su representación en coordenadas esféricas.MATLABcart2sph

#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include <iostream>
void callgetVars() {     using namespace matlab::engine;      // Start MATLAB engine synchronously     std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();      // Evaluate MATLAB statement     matlabPtr->eval(u"[az,el,r] = cart2sph(5,7,3);");     // Get the result from MATLAB     matlab::data::TypedArray<double> result1 = matlabPtr->getVariable(u"az");     matlab::data::TypedArray<double> result2 = matlabPtr->getVariable(u"el");     matlab::data::TypedArray<double> result3 = matlabPtr->getVariable(u"r");      // Display results     std::cout << "az: " << result1[0] << std::endl;     std::cout << "el: " << result2[0] << std::endl;     std::cout << "r: " << result3[0] << std::endl; }

Obtener objetos y propiedades de accesoMATLAB

Utilice las funciones miembro o para obtener variables de objeto.matlab::engine::MATLABEnginegetVariablegetVariableAsyncMATLAB Devolver el objeto a C++ como un.matlab::data::Array Acceder a las propiedades del objeto mediante las funciones miembro o.matlab::engine::MATLABEnginegetPropertygetPropertyAsync

Este código de ejemplo crea un objeto y devuelve el identificador de objeto a C++.MATLABfigure Los valores de la propiedad de la figura son siempre matrices de caracteres.Units Por lo tanto, para consultar la propiedad de la figura, devuelva a con el valor de la propiedad de la figura (valor predeterminado es).Unitsmatlab::data::CharArraypixels

#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include <iostream>
void callgetVariables() {     using namespace matlab::engine;      // Start MATLAB engine synchronously     std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();      // Create figure window     matlabPtr->eval(u"figureHandle = figure;");      //Get figure handle and Units property     matlab::data::Array figHandle = matlabPtr->getVariable(u"figureHandle");     matlab::data::CharArray units = matlabPtr->getProperty(figHandle, u"Units");      // Display property value     std::cout << "Units property: " << units.toAscii() << std::endl; }

Obtener propiedad de la matriz de objetos

Si la variable de objeto es una matriz de objetos, llame o con el índice del objeto en la matriz que desea tener acceso.getPropertygetPropertyAsync Por ejemplo, para obtener el valor de la propiedad del cuarto elemento de la matriz de objetos, especifique el índice como el segundo argumento de entrada.UnitsobjectArray

matlab::data::CharArray units = matlabPtr->getProperty(objectArray, 3, u"Units");

Establecer propiedad en objetoMATLAB

Para establecer el valor de una propiedad de objeto de C++, use la o función miembro.MATLABmatlab::engine::MATLABEnginesetPropertysetPropertyAsync Para tener acceso a la propiedad del objeto, puede obtener la variable de objeto del área de trabajo y establecer el valor en la variable de C++.MATLAB El valor de propiedad que se establece actualiza el objeto en el área de trabajo.MATLAB

También puede devolver un objeto de una llamada a y y establecer los valores de propiedad en ese objeto.MATLABEngine::fevalMATLABEngine::fevalAsync

Este código de ejemplo crea un objeto y devuelve el objeto a C++.MATLABfigure El código establece la propiedad de la figura en, lo que cambia el valor de la propiedad en el objeto en el área de trabajo.ColorredMATLAB

Dado que el valor de la propiedad es una matriz Char, use la para crear a para definir el nuevo valor.Colormatlab::data::ArrayFactorymatlab::data::CharArray

void getObject() {     using namespace matlab::engine;      // Start MATLAB engine synchronously     std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();      //Create MATLAB data array factory     matlab::data::ArrayFactory factory;      // Create figure window     size_t numArguments(1);     std::vector<matlab::data::Array> figureHandle = matlabPtr->feval(u"figure", numArguments, {});      // Pause to display the figure     matlabPtr->eval(u"pause(5)");      // Set the Color property to red     matlabPtr->setProperty(figureHandle[0], u"Color", factory.createCharArray("red"));     matlabPtr->eval(u"pause(10)"); }

Establecer propiedad de matriz de objetos

Si la variable de objeto es una matriz de objetos, llame o con el índice del objeto en la matriz que desea tener acceso.setPropertysetPropertyAsync Por ejemplo, para establecer el valor de la propiedad del cuarto elemento en la matriz de objetos, especifique el índice como el segundo argumento de entrada.ColorobjectArray

matlabPtr->setProperty(objectArray, 3, u"Color", factory.createCharArray("red"));

Consulte también

|

Temas relacionados