主要内容

通过变量MATLAB到C ++

从MATLAB中传递变量®的基础工作区或全局工作区matlab:引擎::MATLABEnginegetVariablegetVariableAsync成员函数。将变量作为a返回给c++matlab::数据::数组

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

将MATLAB计算结果导入c++

此示例代码在MATLAB使用中执行计算MATLABEngine: eval并使用MATLABEngine: getVariable

MATLABcart2sph函数将笛卡尔坐标的点转换为其在球形坐标中的表示。

#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include  .hpp
void callgetVars(){使用命名空间matlab::engine;//同步启动MATLAB引擎std::unique_ptr matlabPtr = startMATLAB();//计算MATLAB语句matlabPtr->eval(u"[az,el,r] = cart2sph(5,7,3);");// MATLAB得到结果MATLAB::data::TypedArray result1 = matlabPtr->getVariable(u"az");matlab::data::TypedArray result2 = matlabPtr->getVariable(u"el");matlab::data::TypedArray result3 = matlabPtr->getVariable(u"r");//显示结果std::cout << "az: " << result1[0] << std::endl;Std::cout << "el: " << result2[0] << Std::endl;Std::cout << "r: " << result3[0] << Std::endl;}

得到MATLAB对象和访问属性

使用matlab:引擎::MATLABEnginegetVariable或者getVariableAsync成员函数得到MATLAB对象变量。将对象作为a返回给c++matlab::数据::数组.属性访问对象属性matlab:引擎::MATLABEnginegetProperty.或者getPropertyAsync成员函数。

此示例代码创建一个matlab数字对象并将对象句柄返回到C ++。图的值单位属性总是字符数组。因此,查询图形单位属性,返回一个Matlab :: data :: chararray使用figure属性的值(默认值为像素).

#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include  .hpp
void callgetvariables(){使用命名空间matlab ::引擎;//同步启动MATLAB引擎std::unique_ptr matlabPtr = startMATLAB();//创建图形窗口matlabptr-> eval(u“figurehandle =图;”);//获取图形句柄和单位属性Matlab :: data :: Array Fighandle = Matlabptr-> GetVariable(U“MupherHandle”);matlab :: data :: chararray单位= matlabptr-> getProperty(Fighandle,U“单位”);// display属性值std :: cout <<“单位属性:”<< sens.to sccii()<< std :: endl;}

从对象数组获取属性

如果对象变量是对象数组,请调用getProperty.或者getPropertyAsync使用要访问的数组中对象的索引。属性的值单位对象数组中的第四个元素的属性,objectArray,将索引指定为第二个输入参数。

matlab::data::CharArray units = matlabPtr->getProperty(objectArray, 3, u" units ");

设置物业MATLAB对象

从C ++设置MATLAB对象属性的值,使用matlab:引擎::MATLABEnginesetProperty或者setpropertyasync.成员函数。要访问对象属性,可以从MATLAB工作区获取对象变量,并在C ++变量上设置值。您设置的属性值更新MATLAB工作区中的对象。

也可以从调用返回一个对象MATLABEngine:函数宏指令MATLABEngine: fevalAsync并在该对象上设置属性值。

此示例代码创建一个matlab数字对象,并将对象返回给c++。代码设置数字颜色财产红色的,它改变了MATLAB工作空间中对象的属性值。

因为颜色属性是一个字符数组,请使用matlab:: data:: ArrayFactory创建一个Matlab :: data :: chararray来定义新值。

void getObject(){使用命名空间matlab::engine;//同步启动MATLAB引擎std::unique_ptr matlabPtr = startMATLAB();//创建MATLAB数据数组工厂MATLAB::data::ArrayFactory factory;//创建图形窗口std::vector figureHandle = matlabPtr->feval(u"figure", numArguments, {});//暂停显示图matlabPtr->eval(u" Pause (5)");//设置颜色属性为红色matlabPtr->setProperty(figureHandle[0], u"Color", factory.createCharArray("red"));matlabPtr - > eval (u“暂停(10)”);}

从对象数组设置属性

如果对象变量是对象数组,请调用setProperty或者setpropertyasync.使用要访问的数组中对象的索引。属性的值颜色对象数组中的第四个元素的属性,objectArray,将索引指定为第二个输入参数。

matlabPtr->setProperty(objectArray, 3, u“颜色”,factory.createCharArray(“红色”));

另请参阅

|

相关话题