Переменные аргументы в функциях MATLAB - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь разработать функцию, которая содержит несколько аргументов. Чтобы быть максимально устойчивым, я хочу, чтобы моя функция вызывалась следующим образом:

foo( x, y, z, 'OptionalArg1', bar, 'OptionalArg2', blah, 'OptionalArg3', val )

Я хочу, чтобы моя функция была достаточно устойчивой, чтобы содержать любую комбинацию этих аргументов в любом порядке. Мне также нужно иметь возможность установить значения по умолчанию, если аргумент не указан. Есть ли стандартный способ сделать это в MATLAB?

1 Ответ

0 голосов
/ 10 мая 2018

Лучше всего использовать класс 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 проще,и понятнее в использовании.

...