2010-03-07 31 views
0

我有一個簡單的加權樹,有根,節點和葉子。現在我想爲從根到葉子的每條路徑分配一個值,這將是所有權重的總和。MATLAB中的結構/類?

有沒有創建一個有兩個字段的結構的方法:值和一個向量(它將保存路徑)即:(10,[root,node1,node3,node5])(路徑長度不每次都不必一樣!),然後我可以存儲在一個矢量[path1 path2 path3 ...]中?

@編輯:另外,我知道有struct(),但我不喜歡它,有沒有其他的方式來做到這一點?

回答

1

您應該看看單元格陣列是否可以實現您想要的功能:{10 [root,node1,node3,node5]}。閱讀有關他們here

+0

會做,謝謝。 –

1

我建議將值和路徑向量存儲在兩個單獨的數組中,並將它們組合到一個結構中。您也可以將路徑長度作爲單獨的矢量添加。它們將通過數組索引映射到對方。

leavesN = 20; % number of leaves 
treestruct.path = cell(leavesN,1); % to store path vectors 
treestruct.sumofweights = zeros(leavesN,1); % to store sum of weights 
treestruct.pathlength = zeros(leavesN,1); % to store path length 

treestuct.path{i} = [root,node1,node3,node5]; % I suppose those variables are numbers 
treestruct.sumofweights(i) = 10; 

treestruct.pathlength(i) = numel(treestuct.path{i}); 

或整個樹:

treestruct.pathlength = cellfun(@numel,treestuct.path);