Лучше всего использовать класс inputParser
с функцией addParameters
.
Короче говоря, ваш код будет выглядеть следующим образом:
function foo(x,y,z,varargin)
p=inputParser;
validationFcn=@(x)isa(x,'double')&&(x<5); % just a random example, add anything
addParameter(p,'OptionalArg1',defaultvalue, validationFcn);
% same for the other 2, with your conditions
%execute
parse(p,varargin{:});
% get the variables
bar=p.Results.OptionalArg1;
% same for the other 2
% foo
В качестве альтернативы вы можете написать свой собственный, как я ( пример здесь ).Код там легко модифицируется, чтобы иметь собственный анализатор ввода (вам просто нужно изменить opts
и добавить switch
для каждого нового opt
.
Но inputParser
проще,и понятнее в использовании.