评估MATLABc++中的语句
评价MATLAB语句
MATLAB进行评估®语句中使用MATLABEngine: eval
而且MATLABEngine: evalAsync
成员函数。这些成员函数类似于MATLABeval
函数。的MATLABEngine: eval
而且MATLABEngine: evalAsync
函数不返回计算MATLAB语句的结果。
使用MATLABEngine: eval
而且MATLABEngine: evalAsync
当你不需要从c++传递参数或返回值到c++时。使用这些函数执行的语句可以访问MATLAB工作区中的变量。
这里有一些关于在MATLAB中求值语句的知识。
这些函数将语句传递给MATLAB
matlab::引擎::字符串
.将一个
std:: string
到一个matlab::引擎::字符串
使用u”……”
字面或效用函数matlab:引擎::convertUTF8StringToUTF16String
.字符串中命名的输入参数必须存在于MATLAB工作空间中。
可以将求值结果赋值给语句字符串中的变量。在语句中分配的变量是在MATLAB基本工作空间中创建的。
MATLAB不需要初始化语句中创建的变量。
可以将MATLAB函数的标准输出和错误消息存储在流缓冲区中。
数学函数的评价MATLAB
此示例代码使用MATLABEngine: eval
来计算一系列的MATLAB语句。这些语句:
下面是等效的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_ptrmatlabPtr = 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++引擎程序的要求.