Main Content

Evaluar extractos de C++MATLAB

Evaluación de las declaracionesMATLAB

Evalúe las instrucciones de C++ con las funciones miembro y.MATLAB®MATLABEngine::evalMATLABEngine::evalAsync Estas funciones miembro son similares a la función.MATLABeval Las funciones y no devuelven los resultados de la evaluación de la instrucción.MATLABEngine::evalMATLABEngine::evalAsyncMATLAB

Use y cuando no necesite pasar argumentos de C++ o devolver valores a C++.MATLABEngine::evalMATLABEngine::evalAsync Las instrucciones que se ejecutan con estas funciones pueden tener acceso a las variables del área de trabajo.MATLAB

Estas son algunas cosas que hay que saber sobre la evaluación de las declaraciones.MATLAB

  • Estas funciones pasan las sentencias en como un.MATLABmatlab::engine::String

  • Convierta un a a utilizando el literal o la función de utilidad.std::stringmatlab::engine::Stringu"…"matlab::engine::convertUTF8StringToUTF16String

  • Los argumentos de entrada nombrados en la cadena deben existir en el área de trabajo.MATLAB

  • Puede asignar los resultados de la evaluación a variables dentro de la cadena de extracto. La variable que asigne en la sentencia se crea en el espacio de trabajo base.MATLAB

  • no requiere inicializar las variables creadas en la sentencia.MATLAB

  • Puede almacenar la salida estándar de las funciones y los mensajes de error en los búferes de secuencia.MATLAB

Evaluar la función matemática enMATLAB

Este código de ejemplo se usa para evaluar una serie de instrucciones.MATLABEngine::evalMATLAB Estas afirmaciones:

  • Evalúe una función matemática en un dominio especificado mediante y.meshgridexp

  • Cree un gráfico de la función utilizando.surf

  • Exporte el gráfico a un archivo JPEG utilizando.print

Aquí está el código equivalente.MATLAB

[X, Y] = meshgrid(-2:0.2:2); Z = X .* exp(-X.^2 - Y.^2); surf(Z) print('SurfaceGraph', '-djpeg') currentFolder = pwd;

Aquí está el código de C++ para ejecutar estas instrucciones en.MATLAB

#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include <iostream>
void evalSurfaceGraph() {     // Evaluate functions in MATLAB      using namespace matlab::engine;      // Start MATLAB engine synchronously     std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();      // Evaluate commands in MATLAB     matlabPtr->eval(u"[X, Y] = meshgrid(-2:0.2:2);");     matlabPtr->eval(u"Z = X .* exp(-X.^2 - Y.^2);");     matlabPtr->eval(u"surf(Z)");     matlabPtr->eval(u"print('SurfaceGraph', '-djpeg')");     matlabPtr->eval(u"currentFolder = pwd;");      // Get the name of the folder containing the jpeg file     matlab::data::CharArray currentFolder = matlabPtr->getVariable(u"currentFolder");     std::cout << "SurfaceGraph.jpg written to this folder: " <<            currentFolder.toAscii() << std::endl; }

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