主要内容

评估MATLAB从c++语句

评价MATLAB语句

MATLAB进行评估®的语句MATLABEngine: evalMATLABEngine: evalAsync成员函数。这些成员函数类似于MATLABeval函数。的MATLABEngine: evalMATLABEngine: evalAsync函数不返回对MATLAB语句求值的结果。

使用MATLABEngine: evalMATLABEngine: evalAsync当你不需要从c++传递参数或返回值给c++时。使用这些函数执行的语句可以访问MATLAB工作空间中的变量。

这里有一些关于在MATLAB中计算语句的事情要知道。

  • 这些函数将语句传递给MATLABmatlab::引擎::字符串

  • 将一个std:: string到一个matlab::引擎::字符串使用u”……”文字或实用函数matlab:引擎::convertUTF8StringToUTF16String

  • 字符串中命名的输入参数必须在MATLAB工作空间中存在。

  • 可以将求值结果赋值给语句字符串中的变量。您在语句中分配的变量是在MATLAB基本工作区中创建的。

  • MATLAB不要求您初始化在语句中创建的变量。

  • 您可以将MATLAB函数的标准输出和错误消息存储在流缓冲区中。

求数学函数MATLAB

此示例代码使用MATLABEngine: eval来计算一系列MATLAB语句。这些语句:

  • 在指定的域上计算一个数学函数meshgrid经验值

  • 使用创建函数的图形冲浪

  • 使用导出图形到JPEG文件打印

这里是等效的MATLAB代码。

[X, Y] = meshgrid(-2:0.2:2);Z = X. * exp(-X. *)^ 2 - y ^ 2);冲浪(Z)打印(“SurfaceGraph”“-djpeg”) currentFolder = pwd;

下面是在MATLAB中执行这些语句的c++代码。

#include " dataarray .hpp" #include " dataarray .hpp" #include " dataarray .hpp" #include " dataarray .hpp
void evalSurfaceGraph(){//在MATLAB中使用命名空间MATLAB::engine评估函数;//同步启动MATLAB引擎std::unique_ptr matlabPtr = startMATLAB();//在MATLAB中计算命令matlabPtr->eval(u"[X, Y] = meshgrid(-2:0.2:2);");var (u"Z = X. * exp(-X. *)^ 2 - y ^ 2);“);matlabPtr - > eval (u“冲浪(Z)”);matlabPtr - > eval (u“打印(‘SurfaceGraph’,‘-djpeg’)”);matlabPtr - > eval (u“currentFolder = pwd;”);//获取包含jpeg文件的文件夹的名称matlab::data::CharArray currentFolder = matlabPtr->getVariable(u"currentFolder");std::cout << "SurfaceGraph.jpg写入这个文件夹:" << currentFolder.toAscii() << std::endl;}

有关如何设置和构建c++引擎程序的信息,请参见构建c++引擎程序

另请参阅

相关的话题