Main Content

Pase variables de C++ aMATLAB

Formas de pasar variables

Puede pasar variables de C++ al uso de estas técnicas:MATLAB®

  • Pase las variables como argumentos de función en las llamadas a las funciones miembro o.matlab::engine::MATLABEnginefevalfevalAsync Las variables pasadas como argumentos a las llamadas de función no se almacenan en el área de trabajo base.MATLAB Para obtener más información, consulte.Llame a funciones desde C++MATLAB

  • Coloque las variables en el espacio de trabajo base o global mediante las funciones miembro y.MATLABmatlab::engine::MATLABEnginesetVariablesetVariableAsync Para obtener más información sobre el uso de variables globales, consulte la función.MATLABMATLABglobal

Puede crear variables en el espacio de trabajo mediante las funciones miembro y.MATLABmatlab::engine::MATLABEngineevalevalAsync Utilice estas funciones para ejecutar sentencias que hagan asignaciones a variables.MATLAB Para obtener más información, consulte.Evaluar extractos de C++MATLAB

Colocar variables en el área de trabajo baseMATLAB

Este código de ejemplo realiza estos pasos:

  • Coloca las variables en el área de trabajo medianteMATLABMATLABEngine::setVariable

  • Utiliza estas variables para llamar a la función medianteMATLABmovsumMATLABEngine::eval

  • Obtiene la variable de salida del área de trabajo mediante.AMATLABMATLABEngine::getVariable

Aquí está el código equivalente.MATLAB

 A = movsum([4 8 6 -1 -2 -3 -1 3 4 5],3,'Endpoints','discard');

Aquí está el código de C++.

#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include <iostream>
void callputVariables() {     using namespace matlab::engine;      // Start MATLAB engine synchronously     std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();      //Create MATLAB data array factory     matlab::data::ArrayFactory factory;      // Create variables         auto data = factory.createArray<double>({ 1, 10 },         { 4, 8, 6, -1, -2, -3, -1, 3, 4, 5 });     auto  windowLength = factory.createScalar<int32_t>(3);     auto name = factory.createCharArray("Endpoints");     auto value = factory.createCharArray("discard");            // Put variables in the MATLAB workspace     matlabPtr->setVariable(u"data", std::move(data));     matlabPtr->setVariable(u"w", std::move(windowLength));     matlabPtr->setVariable(u"n", std::move(name));     matlabPtr->setVariable(u"v", std::move(value));      // Call the MATLAB movsum function     matlabPtr->eval(u"A = movsum(data, w, n, v);");      // Get the result     matlab::data::TypedArray<double> const A = matlabPtr->getVariable(u"A");            // Display the result     int i = 0;     for (auto r : A) {         std::cout << "results[" << i << "] = " << r << std::endl;         ++i;     } }

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

Consulte también

|

Temas relacionados