【发布时间】: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的类?
标签: matlab struct properties