忽略Matlab输入参数

use*_*581 0 matlab arguments function

我有一个功能:

function myself(a,b,c,d)
Run Code Online (Sandbox Code Playgroud)

我想在代码中使用此函数只提供参数ab.我想忽略论点cd.

这该怎么做?谢谢.

Ste*_*fin 7

退房varargin并且nargin

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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

请注意,许多人可能会选择使用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
Run Code Online (Sandbox Code Playgroud)