如何在matlab中检测省略的输入?

时间:2015-06-01 10:33:52

标签: matlab

在函数replace_me(v,a,b,c)中,如果省略b,我想将b,b替换为c

我的代码是

if c == 0
    b = [b b]
end

当我运行此代码时,它会给我下一个错误

  

没有足够的输入参数。

任何帮助。 提前谢谢

2 个答案:

答案 0 :(得分:4)

在函数体中使用nargin来检测输入的数量。对于您的具体情况:

function  replace_me(v,a,b,c)
        switch nargin
        case 4
                %// full case, do nothing
        case 3
                b = [b b];
        otherwise
                error('Invalid number of arguments');
        end;

        %// The rest of the code
end

请注意,在switch语句之后,您不应再引用参数c,因为在3个参数的情况下,对省略的输入的任何引用都将产生错误。这可能会让代码的维护者感到困惑(包括你自己,经过足够的时间)。也许这种方式更有意义,更强大:

function  replace_me(v,a,b,c)
        switch nargin
        case 4
                %// full case, do nothing
        case 3
                %// supply default value for c
                c = b; 
        otherwise
                error('Invalid number of arguments');
        end;

        %// The rest of the code
end

当然,这是否是你想要的是由你的评价(发布不提供太多细节)。

答案 1 :(得分:0)

在您的功能乞求时,您可以添加

if nargin == 3
    c=b;
end