主要内容

评估MATLABc++中的语句

评价MATLAB语句

MATLAB进行评估®语句中使用MATLABEngine: eval而且MATLABEngine: evalAsync成员函数。这些成员函数类似于MATLABeval函数。的MATLABEngine: eval而且MATLABEngine: evalAsync函数不返回计算MATLAB语句的结果。

使用MATLABEngine: eval而且MATLABEngine: 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。²- y .²);冲浪(Z)打印(“SurfaceGraph”“-djpeg”) currentFolder = pwd;

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

#包括“MatlabDataArray.hpp”#包括“MatlabEngine.hpp”#
void evalSurfaceGraph(){//在MATLAB中使用命名空间MATLAB::engine计算函数;//同步启动MATLAB引擎std::unique_ptr matlabPtr = startMATLAB();//在MATLAB中计算matlabPtr->eval(u"[X, Y] = meshgrid(-2:0.2:2);");matlabPtr->eval(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 written to this folder: " << currentFolder.toAscii() << std::endl;}

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

另请参阅

相关的话题