I just started using Matlab, and I absolutely despise (or not properly understand), the typesystem (or lack thereof).
Why does this not work ? I just want structs within structs (in a recursive function)
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.
I tried other things, like making d=struct('op',1,'kids', struct([])), but nothing seems to work….
When you index into it with
(1), you’re trying to assign the struct in to the first element ofd.kids, which is already adoublearray and thus a type mismatch. Just assign over the entire field.To initialize it with a struct to start out with, do this, calling
structwith no arguments instead of passing[]to it.Don’t give in to despair and hatred yet. The type system can handle what you want here; you’re just making basic syntax mistakes. Have a read through the MATLAB Getting Started guide, especially the “Matrices and Arrays” and “Programming” sections, found in the online help (call
doc()from within Matlab) or the MathWorks website.