如何在结构中放置结构

时间:2012-02-01 15:49:32

标签: matlab matlab-struct

我刚刚开始使用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([])),但似乎没有任何作品......

3 个答案:

答案 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;