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函数的标准输出和错误消息存储在流缓冲区中。
此示例代码使用MATLABEngine: eval
来计算一系列MATLAB语句。这些语句:
这里是等效的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_ptrmatlabPtr = 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++引擎程序.