如何获取具有权重的邻接矩阵?
假设我有
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
。
为什么?
答案 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