Zoran
Zoran

Reputation: 459

Matlab: list of trees

I have implemented a binary tree in Matlab using 'struct' type elements as nodes. An N-node tree has, say, N such structs.

My problem is that I have M such trees, each having a different number of nodes, N_1, N_2, ..., N_M. How can I hold these trees in a list or array which can be iterated? Several trials like struct of structs did not seem to work.

Edit: I want to do something like the following. myClassTree returns a tree with N_i nodes.

trees = struct;
for i=1:nTrees
    tree = myClassTree(train(bags(i,:),:), entropy, depth);
    trees(i) = tree;
end

Upvotes: 1

Views: 1710

Answers (1)

Pursuit
Pursuit

Reputation: 12345

The easiest thing is to create a cell array. Simply replace trees(i) = tree; with trees{i} = tree; (note braces, rather than parenthesis).

Cell arrays are useful whenever you want to store an array of mixed data types. To access elements of a cell array, you can use the braces again. For example, this should work as you expect:

currentTree = trees{someIndex}; 

The code that you posted creates an array of structs, which only works if the structures have the same fieldnames.

If you wanted (not recommended) you could created a struct of structs, but doing somehting like this trees.(['n' sprintf('%04d',i)]) = tree;. (But please don't.)

Upvotes: 2

Related Questions