带类的matlab - 将结构保存在空的双数组中
Posted
技术标签:
【中文标题】带类的matlab - 将结构保存在空的双数组中【英文标题】:matlab with classes - save struct in empty double array 【发布时间】:2020-04-27 05:28:22 【问题描述】:我尝试在 matlab 中创建一个类
它有一个属性children
properties
children
如果这个变量被写入 - 它应该是一个结构数组 它失败了
function obj = Init(obj, valueList)
%INIT Initialise with vector of new parameter sets
newSet = obj.ParamSet;
newSet.values = valueList;
obj.children(end + 1) = newSet; % <<< error
错误是:
无法从 struct 转换为 double。
这是使用的结构
methods(Static)
function paramset = ParamSet()
newset.('values') = [];
newset.('fitness') = 0;
paramset = newset;
end
end
【问题讨论】:
您不能将结构存储在双精度数组中。您可以将它们存储在单元格中,或者创建一个结构体。 当您说“结构数组”时,您是指具有一致字段的 N*1 结构,还是任意结构数组?前者意味着obj.children
将是一个结构数组,后者意味着您需要一个单元格数组...请提供一个minimal reproducible example,您可以在其中创建children
应该是什么的示例——这可能不需要整个类定义
我在不知道ParamSet
的类的情况下发布了答案。您能否更新您的帖子,使用obj.ParamSet
的类?
【参考方案1】:
简单的解决方案是如果为空则赋值:
if isempty(obj.children)
obj.children = newSet;
else
obj.children(end + 1) = newSet;
end
【讨论】:
以上是关于带类的matlab - 将结构保存在空的双数组中的主要内容,如果未能解决你的问题,请参考以下文章
matlab 怎么将374个结构体数据保存在一个数组中?用哪个函数