我有一個簡單的加權樹,有根,節點和葉子。現在我想爲從根到葉子的每條路徑分配一個值,這將是所有權重的總和。MATLAB中的結構/類?
有沒有創建一個有兩個字段的結構的方法:值和一個向量(它將保存路徑)即:(10,[root,node1,node3,node5])(路徑長度不每次都不必一樣!),然後我可以存儲在一個矢量[path1 path2 path3 ...]中?
@編輯:另外,我知道有struct(),但我不喜歡它,有沒有其他的方式來做到這一點?
我有一個簡單的加權樹,有根,節點和葉子。現在我想爲從根到葉子的每條路徑分配一個值,這將是所有權重的總和。MATLAB中的結構/類?
有沒有創建一個有兩個字段的結構的方法:值和一個向量(它將保存路徑)即:(10,[root,node1,node3,node5])(路徑長度不每次都不必一樣!),然後我可以存儲在一個矢量[path1 path2 path3 ...]中?
@編輯:另外,我知道有struct(),但我不喜歡它,有沒有其他的方式來做到這一點?
您應該看看單元格陣列是否可以實現您想要的功能:{10 [root,node1,node3,node5]}
。閱讀有關他們here。
我建議將值和路徑向量存儲在兩個單獨的數組中,並將它們組合到一個結構中。您也可以將路徑長度作爲單獨的矢量添加。它們將通過數組索引映射到對方。
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);
會做,謝謝。 –