我刚刚开始使用Matlab,我绝对鄙视(或者没有正确理解)类型系统(或缺乏)。
为什么这不起作用?我只想在结构中使用结构(在递归函数中)
K>> d = struct('op',1,'kids',[])
d =
op: 1
kids: []
K>> d.kids(1) = struct('op',2)
Conversion to double from struct is not possible.
我尝试了其他的事情,比如制作d=struct('op',1,'kids', struct([]))
,但似乎没有任何作品......
答案 0 :(得分:8)
当您使用(1)
对其进行索引时,您尝试将结构分配给d.kids
的第一个元素,该元素已经是double
数组,因此类型不匹配。只需分配整个字段。
d.kids = struct('op', 2);
要使用结构初始化它,请执行此操作,不带参数调用struct
,而不是将[]
传递给它。
d = struct('op',1, 'kids',struct());
不要屈服于绝望和仇恨。类型系统可以处理你想要的东西;你只是犯了基本的语法错误。阅读MATLAB入门指南,特别是在线帮助(在Matlab中调用doc()
)或the MathWorks website中的“矩阵和数组”和“编程”部分。
答案 1 :(得分:1)
您的第二个命令不需要索引。
d.kids = struct('op',2)
您的初始值[]
不会使该字段成为数组。
class
向Matlab询问表达式的类型。
答案 2 :(得分:1)
你也可以用更短的方式来做:
d.op = 1;
d.kids.op = 2;