主题:请教matlab中调用子函数的问题(急)
我编了一个函数find_way,里面需要调用另一个函数find0,在子函数find0中,根据主函数输入的参数生成两个数组,,可是运行的时候总是报错:??? Undefined function or variable "sta".
Error in ==> find_way at 61
[num1,busway1,busnum1,k]=find0(sta,des,k);
请各位大虾帮忙看一下!
程序如下:
function [num,busway,busnum]=find_way(a,b,x,y)%主函数
p=1;q=1;
for i=1:27756
if a(i,1)==x
s(p,:)=a(i,:);
p=p+1;
end
if b(i,1)==y
d(q,:)=b(i,:);
q=q+1;
end
end
[slength,length]=size(s);
dlength=size(d,1);
k=1;
m0=1;
for i=1:slength
for j=1:dlength
if s(i,2)==d(j,2)
num=0;busway(m0)=s(i,2);busnum(m0)=0;
m0=m0+1;k=k+1;
end
end
end
if k==1
m1=1;
for i=1:slength
for j=3:length
for p=1:dlength
for q=3:length
if s(i,j)==d(p,q)&&s(i,j)~=0&&d(p,q)~=0
num=1;busway(m1,1)=s(i,2);busway(m1,2)=d(p,2);
busnum(m1)=s(i,j);
m1=m1+1;k=k+1;
end
end
end
end
end
end
if k==1
m2=1;
for i=1:slength
for j=3:length
for p=1:dlength
for q=3:length
[num1,busway1,busnum1,k]=find0(a,b,s(i,j),d(p,q),k);
if num1==0
num=2;busway(m2,1)=s(i,2);busway(m2,2)=busway1;busway(m2,3)=d(p,2);
busnum(m2,1)=s(i,j);busnum(m2,2)=d(i,j);
m2=m2+1;k=k+1;
end
end
end
end
end
end
if k==1
num=Inf;busway=0;busnum=0;
end
function [num,busway,busnum,k]=find0(a,b,x,y,k)
p=1;q=1;
for i=1:27756
if a(i,1)==x
sta(p,:)=a(i,:);
p=p+1;
end
if b(i,1)==y
des(q,:)=b(i,:);
q=q+1;
end
end
slength=size(sta,1);
dlength=size(des,1);
m0=1;
for i=1:slength
for j=1:dlength
if sta(i,2)==des(j,2)
num=0;busway(m0)=sta(i,2);busnum(m0)=0;
m0=m0+1;k=k+1;
end
end
end
Error in ==> find_way at 61
[num1,busway1,busnum1,k]=find0(sta,des,k);
请各位大虾帮忙看一下!
程序如下:
function [num,busway,busnum]=find_way(a,b,x,y)%主函数
p=1;q=1;
for i=1:27756
if a(i,1)==x
s(p,:)=a(i,:);
p=p+1;
end
if b(i,1)==y
d(q,:)=b(i,:);
q=q+1;
end
end
[slength,length]=size(s);
dlength=size(d,1);
k=1;
m0=1;
for i=1:slength
for j=1:dlength
if s(i,2)==d(j,2)
num=0;busway(m0)=s(i,2);busnum(m0)=0;
m0=m0+1;k=k+1;
end
end
end
if k==1
m1=1;
for i=1:slength
for j=3:length
for p=1:dlength
for q=3:length
if s(i,j)==d(p,q)&&s(i,j)~=0&&d(p,q)~=0
num=1;busway(m1,1)=s(i,2);busway(m1,2)=d(p,2);
busnum(m1)=s(i,j);
m1=m1+1;k=k+1;
end
end
end
end
end
end
if k==1
m2=1;
for i=1:slength
for j=3:length
for p=1:dlength
for q=3:length
[num1,busway1,busnum1,k]=find0(a,b,s(i,j),d(p,q),k);
if num1==0
num=2;busway(m2,1)=s(i,2);busway(m2,2)=busway1;busway(m2,3)=d(p,2);
busnum(m2,1)=s(i,j);busnum(m2,2)=d(i,j);
m2=m2+1;k=k+1;
end
end
end
end
end
end
if k==1
num=Inf;busway=0;busnum=0;
end
function [num,busway,busnum,k]=find0(a,b,x,y,k)
p=1;q=1;
for i=1:27756
if a(i,1)==x
sta(p,:)=a(i,:);
p=p+1;
end
if b(i,1)==y
des(q,:)=b(i,:);
q=q+1;
end
end
slength=size(sta,1);
dlength=size(des,1);
m0=1;
for i=1:slength
for j=1:dlength
if sta(i,2)==des(j,2)
num=0;busway(m0)=sta(i,2);busnum(m0)=0;
m0=m0+1;k=k+1;
end
end
end