如何获得带权重的邻接矩阵?
How to get an adjacency matrix with weights?
如何得到带权重的邻接矩阵?
假设我有
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')
但标记了一个错误
Error using digraph/adjacency Too many input arguments.
当我键入 A = adjacency(G)
时,将所有成本设置为 1
。
为什么?
adjacency
只接受 1 个输入参数,这就是您收到该错误的原因。该函数仅设计为 return 值 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
如何得到带权重的邻接矩阵?
假设我有
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')
但标记了一个错误
Error using digraph/adjacency Too many input arguments.
当我键入 A = adjacency(G)
时,将所有成本设置为 1
。
为什么?
adjacency
只接受 1 个输入参数,这就是您收到该错误的原因。该函数仅设计为 return 值 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