如何在结构中放置结构

raf*_*lio 1 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.
Run Code Online (Sandbox Code Playgroud)

我试过其他的东西,比如制作d=struct('op',1,'kids', struct([])),但似乎没什么用......

And*_*nke 8

当你用它索引时(1),你试图将结构分配给第一个元素d.kids,它已经是一个double数组,因此类型不匹配.只需分配整个字段.

d.kids = struct('op', 2);
Run Code Online (Sandbox Code Playgroud)

要使用结构初始化它,请执行此操作,struct不带参数调用而不是传递[]给它.

d = struct('op',1, 'kids',struct());
Run Code Online (Sandbox Code Playgroud)

不要屈服于绝望和仇恨.类型系统可以处理你想要的东西; 你只是犯了基本的语法错误.阅读MATLAB入门指南,特别是在线帮助(doc()在Matlab中调用)或MathWorks网站上的"矩阵和数组"和"编程"部分.