Как получить матрицу смежности с весами? - PullRequest
0 голосов
/ 06 декабря 2018

Как получить матрицу смежности с весами?

Предположим, у меня есть

s=[1 1 2 2 2 3 3 4 4 4 5 5 6 7];

t=[2 3 4 5 3 5 6 5 7 8 6 8 7 8];

w=[3 5 4 7 4 9 8 3 11 8 3 9 8 7];

G=digraph(s,t,w)

Он должен был быть создан с этим

A = adjacency(G,'weighted')

, но отмечает ошибкуэто говорит

Ошибка при использовании digraph / смежности. Слишком много входных аргументов.

Когда я набираю A = adjacency(G), установите все затраты как 1.

Почему?

1 Ответ

0 голосов
/ 06 декабря 2018

adjacency принимает только 1 входной аргумент, поэтому вы получаете эту ошибку.Функция предназначена только для возврата значений 0 или 1.

Вы можете получить взвешенную матрицу смежности из следующего, взятого из документации MATLAB для функции adjacency.

nn = numnodes(G);
[s,t] = findedge(G);
A = sparse(s,t,G.Edges.Weight,nn,nn)

Кроме того, вы можете построить взвешенную матрицу смежности без использования графических объектов.

nn = max([s, t]);
A = zeros(nn);
for i = 1:length(s)
  A(s(i), t(i)) = w(i);
end
...