忽略Matlab输入参数

时间:2016-05-02 05:25:34

标签: matlab function arguments

我有一个功能:

function myself(a,b,c,d)

我想在代码中使用此函数,只提供参数ab。 我想忽略参数cd

怎么做? 谢谢。

2 个答案:

答案 0 :(得分:7)

结帐vararginnargin

function output = myself(varargin)

if nargin > 0
    a = varargin{1};
    if nargin > 1
        b = varargin{2};
        if nargin > 2
            c = varargin{3};
            if nargin > 3
                d = varargin{4};
            end
        end
    end
end

您也可以这样定义默认值:

function output = myself(varargin)

if nargin > 0
    a = varargin{1};
    if nargin > 1
        b = varargin{2};
        if nargin > 2
            c = varargin{3};
            if nargin > 3
                d = varargin{4};
            else
                d = 0;
            end
        else
            c = 0;
        end
    else
        b = 1;
    end
a = 50;
end

请注意,许多人可能会选择使用switch而不是if, else。这是个人偏好的问题。

function output = myself(varargin)

switch nargin
    case 1
        a = varargin{1};
    case 2
        [a, b] = varargin{:};   
    case 3
        [a, b, c] = varargin{:} 
    otherwise
        [a, b, c, d] = varargin{:};
end

答案 1 :(得分:3)

Stewie如果您有许多默认参数,那么答案非常好。但是,如果您只有一个并非总是使用的输入,则可以进行具体检查:

 function myself(a, b, c, d)
 if ~exist('d', 'var')
    %// d is not defined
 else
    %// you can use d here
 end