主要内容

将来自C ++的变量传递给马铃薯

通过变量的方法

您可以将C ++变量传递给MATLAB®使用这些技术:

  • 将变量作为呼叫中的函数参数传递Matlab :: Engine :: MatlabengineFeval.要么Fevalasync.会员职能。作为函数调用的参数传递的变量未存储在MATLAB基础工作区中。有关更多信息,请参阅调用来自C ++的MATLAB函数

  • 使用Matlab基础或全局工作空间中的变量使用Matlab :: Engine :: Matlabengine可遗漏的setvariableasync.会员职能。有关在MATLAB中使用全局变量的更多信息,请参阅MATLAB全球的功能。

您可以使用Matlab Workspace中的变量使用Matlab :: Engine :: Matlabengine求解evalasync.会员职能。使用这些函数来执行使分配给变量的matlab语句。有关更多信息,请参阅评估来自C ++的MATLAB语句

放入变量马铃薯基础工作区

此示例代码执行以下步骤:

  • 将变量放入Matlab Workspace中使用Matlabengine :: SetVariable.

  • 使用这些变量来调用matlabMovsum.使用matlabengine :: eval.

  • 获取输出变量一种从MATLAB工作区使用Matlabengine :: GetVariable.

这是等效的matlab代码。

a = movsum([4 8 6 -1 -2 -3 -1 3 4 5],3,'终点''丢弃');

这是C ++代码。

#include“matlabdataArray.hpp”#include“matlabengine.hpp”#include 
void callputvariables(){使用命名空间matlab ::引擎;// start matlab引擎同步std :: unique_ptr  matlabptr = startmatlab();//创建MATLAB数据阵列Factory MATLAB :: DATA :: ArrayFactory Factory;//创建变量Matlab :: data :: typedArray  Data = Factory.createArray ({1,10},{4,8,6,-1,-2,-3,-1,3,4,5});matlab :: data :: typedArray  windowlength = factory.createscalar (3);matlab :: data :: chararray name = factory.createcharArray(“端点”);matlab :: data :: chararray value = factory.createcharArray(“丢弃”);//将变量放在Matlab Workspace MatlabPtr-> SetVariable(U“数据”,STD :: Move(数据));matlabptr-> SetVariable(U“W”,STD :: Move(WindowLength)); matlabPtr->setVariable(u"n", std::move(name)); matlabPtr->setVariable(u"v", std::move(value)); // Call the MATLAB movsum function matlabPtr->eval(u"A = movsum(data, w, n, v);"); // Get the result matlab::data::TypedArray const A = matlabPtr->getVariable(u"A"); // Display the result int i = 0; for (auto r : A) { std::cout << "results[" << i << "] = " << r << std::endl; ++i; } }

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

也可以看看

|

相关话题