【发布时间】:2015-01-06 16:30:00
【问题描述】:
我正在将 Matlab 代码与集成 engine.h 的 C++ 代码连接。
我创建了一个包含多个标量和矩阵字段的结构。我首先使用命令行语法创建标量字段,我编写了辅助方法
void matlabSetStruct(Engine * ep, const std::string structure,
const std::string field, T value)
{
ostringstream ss;
ss << value;
std::string setStruct = structure + "." + field + " = " + ss.str() + ";";
matlabExecute(ep, setStruct);
}
现在,我想将矩阵字段添加到同一个结构中。我可以成功创建名称为MyStruct.Field 的新矩阵变量,但它们不被识别为现有结构MyStruct 的字段,而是被识别为新变量。我正在使用
int ret = engPutVariable(ep, array_name.c_str(), array);
如果我whos,我会得到
MyStruct 1x1 7176 struct
MyStruct.CT_F1 1x1795 14360 double
MyStruct.CT_F2 1x1795 14360 double
--> 矩阵字段是自变量
我找到了mxSetField,但是这是用于将字段添加到使用mxCreateStructMatrix 创建的结构中,并且此方法用于在 C 中创建与结构矩阵等效的 Matlab,这不是我想要实现的。
【问题讨论】:
标签: c++ matlab struct integration mex