求帮忙解答一matlab简单程序 ,总是运行结果出不来

function [D,Node] = floyd( a ) n = size(a,1); D = a; Node = zeros (n,n); for i = 1 : n for j = 1 : n if D(i,j) ~= inf; Node(i,j) = j; end end end for k = 1 : n for i = 1 : n for j = 1 : n if D(j,k) + D(k,j) < D(i,j) D(i,j) = D(j,k) + D(k,j); Node(i,j) = Node(i,k); end end end end 我不知道如何给a定义,a是一个路网邻接矩阵,它的值为a =[0,5,0,3,0,0,0,0,0;5,0,7,0,4,0,0,0,0;0,7,0,6,0,10,0,0,0;3,0,6,0,6,0,0,0,0;0,4,0,6,0,13,0,0,0;0,0,10,0,13,0,7,9,0;0,0,0,0,0,7,0,0,11;0,0,0,0,0,9,0,0,14;0,0,0,0,0,0,11,14,0]
2026年09月26日 03:07
有1个网友回答
网友(1):

你先试着执行函数主体部分吧,结果可能会让你有思路
a=[0,5,0,3,0,0,0,0,0;5,0,7,0,4,0,0,0,0;0,7,0,6,0,10,0,0,0;3,0,6,0,6,0,0,0,0;0,4,0,6,0,13,0,0,0;0,0,10,0,13,0,7,9,0;0,0,0,0,0,7,0,0,11;0,0,0,0,0,9,0,0,14;0,0,0,0,0,0,11,14,0];
% function [D,Node] = floyd( a )
n = size(a,1);
D = a; Node = zeros (n,n);
for i = 1 : n
for j = 1 : n
if D(i,j) ~= inf;
Node(i,j) = j;
end
end
end
for k = 1 : n
for i = 1 : n
for j = 1 : n
if D(j,k) + D(k,j) < D(i,j)
D(i,j) = D(j,k) + D(k,j);
Node(i,j) = Node(i,k);
end
end
end
end
D
Node