1

「構造体」タイプの要素をノードとして使用して、Matlab にバイナリ ツリーを実装しました。Nノードツリーには、たとえばN個のそのような構造体があります。

私の問題は、M 個のツリーがあり、それぞれが異なる数のノード (N_1、N_2、...、N_M) を持っていることです。これらのツリーを反復可能なリストまたは配列に保持するにはどうすればよいですか? struct of structs のようないくつかの試行はうまくいかないようでした。

編集:次のようなことをしたい。myClassTree は N_i ノードを持つツリーを返します。

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

1 に答える 1

2

最も簡単な方法は、セル配列を作成することです。単純に(括弧ではなく中括弧に注意trees(i) = tree;してください)に置き換えます。trees{i} = tree;

cell 配列は、データ型が混在する配列を格納する場合に便利です。cell 配列の要素にアクセスするには、中かっこを再度使用できます。たとえば、これは期待どおりに機能するはずです。

currentTree = trees{someIndex}; 

投稿したコードは、構造体のフィールド名が同じ場合にのみ機能する構造体の配列を作成します。

必要に応じて (推奨されません)、構造体の構造体を作成できますが、このようなことを行いtrees.(['n' sprintf('%04d',i)]) = tree;ます。(しかし、しないでください。)

于 2013-06-04T00:44:24.720 に答える