PDA

查看完整版本 : [MATLAB基础] matlab最短路径的输出问题,用了递归,但程序出错了,请大虾指点


lgzh2ld
2009-04-09, 22:30
程序如下
function shortestpath(w,p,q)
c='->';
l='';
f='';
t=size(w);
m=t(1,1);
a=zeros(m,m);
v=w;
for k=1:m
for i=1:m
for j=1:m
b=[w(i,j),w(i,k)+w(k,j)];
w(i,j)=min(b);
if w(i,j)~=v(i,j)
a(i,j)=k;
%a(i,j)=10*a(i,j)+k;
v=w;
end
end
end
end
w;
a;
y=a(p,q);
if x~=0
function path(x)
x=y;
if x~=0
path(a(p,x));
p=x;
x=num2str(x);
f=strcat(f,x);
f=strcat(f,c);
path(a(x,q));
end
end
p=num2str(p);
p=strcat(p,c);
f=strcat(p,f);
q=num2str(q);
f=strcat(f,q)
else
fprintf('%d->%d',p,q)
end


运行之后,出现了
>> shortestpath(w,1,2)
??? Error: File: E:\matlab\work\shortestpath.m Line: 26 Column: 4
Illegal use of reserved keyword "function".
实在不知道如何修改,请求帮助

yhcode
2009-04-10, 10:12
把错误行的function去除就可以了

lgzh2ld
2009-04-10, 14:05
我是想将PATH这个函数嵌套到SHORTESTPATH 这个函数里面的,去除FUNCTION命令就不完整了

yhcode
2009-04-10, 15:43
不会吧,你的这个PATH函数是MATLAB里的还是你自己编的M函数?无论是哪种情况,调用的时候都不用写function前缀呀,只有在该函数的原始实现也就是函数定义里才可以用function,定义好的函数直接调用就可以了,不用加function

lgzh2ld
2009-04-10, 16:37
谢谢了,可以运行了,虽然还是没有输出我想要的结果,你说的是对的,谢谢哈