回 帖 发 新 帖 刷新版面

主题:请教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

回复列表 (共1个回复)

沙发

matlab的子函数不是这样用地。。。。

要新建一个文件,文件第一行function function_name()
原则上文件名就要叫做function_name.m

把子程序写在这个文件里面,然后存到你要调用的文件夹下,就可以随时调用了,呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册