Как использовать splitapply / findgroups на кластерных / непоследовательных графах? - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно реализовать функцию splitapply для непоследовательного индекса узла на графике.

Я реализовал функцию splitapply на графе, который имеет непоследовательные кластеры.Индексные номера возвращаемых кластеров были последовательно пронумерованы, но вершины графа не пронумерованы последовательно.Я хочу, чтобы он возвращал точные индексы узлов из исходного графика.

S={' 1',' 1',' 2',' 6',' 6',' 8'};
T={' 2',' 3',' 3',' 8',' 9',' 9'};
weight=[2; 2; 2; 2; 2; 2];
G=graph(S,T,weight);

plot(G)
bins=conncomp(G);
clusters = splitapply(@(x) {x}, 1:numnodes(G), bins);

Фактические результаты: clusters: [1,2,3];[4,5,6]
Ожидаемые результаты: clusters: [1,2,3];[6,8,9]

примерный график

1 Ответ

0 голосов
/ 20 февраля 2019

После вашего кода попробуйте что-то вроде

nodes = table2array(G.Nodes);
result = cellfun(@(x) nodes(x), clusters, 'uniformoutput', false);
...