如何获得具有权重的邻接矩阵?

时间:2018-12-05 23:41:50

标签: matlab graph adjacency-matrix

如何获取具有权重的邻接矩阵?

假设我有

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')

但标记为错误

  

使用有向图/邻接关系时出错。输入参数过多。

当我键入A = adjacency(G)时,请将所有费用设置为1

为什么?

1 个答案:

答案 0 :(得分:1)

adjacency仅接受1个输入参数,这就是为什么您收到该错误的原因。该函数仅设计为返回0或1的值。

您可以从以下内容中获取加权邻接矩阵,这些矩阵取自adjacency函数的MATLAB文档。

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