Matlab中的错误:虽然变量存在,但输入参数未定义

时间:2012-08-23 14:07:53

标签: matlab variables

我已经编写了这个函数,我已经为rg和Lp定义了值,但是当我运行这个函数时它仍然返回错误:(输入参数“Lr”未定义。

==>中的错误比斯在12     如果f(Lr,rg,Xo)* f(Lr,rg,Xf)> 0)

这是功能:

function[Lp,Xo,Xf]=Bis(Lr,rg)

Xo=0;
Xf=10;
Err=0.01;

syms x;
f=inline('(sqrt((2/3)*(((x*Lr)/3)-(x*x)+((2*x*x*x)/Lr)-((2*x*x*x*x)/(Lr*Lr))+(((2*x*x*x*x)/(Lr*Lr))*exp(-Lr/x))))-rg)');


    if f(Lr,rg,Xo)*f(Lr,rg,Xf)>0
        disp('The values you entered are not apropriate !')
        PlotLpFunction;
    Lp='unknown';
    elseif f(Lr,rg,Xo)*f(Lr,rg,Xf)==0
        if f(Lr,rg,Xo)==0
            Lp=Xo;
        elseif f(Lr,rg,Xf)==0
            Lp=Xf;
        end

    elseif f(Lr,rg,Xo)*f(Lr,rg,Xf)<0
        xi=(Xf-Xo)/2;
        while abs(f(Lr,rg,xi))>Err 
            if f(Lr,rg,xi)*f(Lr,rg,Xf)<0
                Xo=xi;
                xi=(Xo+Xf)/2;
            elseif f(Lr,rg,xi)*f(Lr,rg,Xf)>0
                Xf=xi;
                xi=(Xo+Xf)/2;   
            end
        end
        Lp=xi;
    end

1 个答案:

答案 0 :(得分:2)

代码在最新版本的Matlab上为我执行,而不是我没有PlotLpFunction。

我最初的印象是你忘了将Lr(以及所有其他参数)发送到你的内联函数中,通过将它们作为参数添加到内联函数中非常容易解决。您可以在the official documentation找到完整用法。

相关部分

  

inline(expr,arg1,arg2,...)构造一个内联函数,其输入   参数由字符串arg1,arg2,....多字符指定   可以使用符号名称。

但是它似乎在Matlab 2011b和2008b上都可以很好地形成内联,大概来自上下文。答案现在被接受,所以可能是问题所在。其他人可以重现他的问题吗?如果是这样,请提供您的Matlab版本或其他情况。