Дополнительные аргументы в функциях MATLAB - программирование
Подтвердить что ты не робот

Дополнительные аргументы в функциях MATLAB

Как я могу объявить функцию в MATLAB с необязательными аргументами?

Например: function [a] = train(x, y, opt), где opt должен быть необязательным аргументом.

4b9b3361

Ответ 1

Есть несколько различных вариантов, как это сделать. Самое главное - использовать varargin, а затем использовать nargin, size и т.д., Чтобы определить, были ли дополнительные аргументы передается функции.

% Function that takes two arguments, X & Y, followed by a variable 
% number of additional arguments
function varlist(X,Y,varargin)
   fprintf('Total number of inputs = %d\n',nargin);

   nVarargs = length(varargin);
   fprintf('Inputs in varargin(%d):\n',nVarargs)
   for k = 1:nVarargs
      fprintf('   %d\n', varargin{k})
   end

Еще более элегантное решение состоит в том, чтобы использовать класс inputParser для определения всех аргументов, ожидаемых вашей функцией, как требуемых, так и необязательный. inputParser также позволяет выполнять проверку типов всех аргументов.

Ответ 2

Простой способ сделать это через nargin (N аргументов в). Недостатком является то, что вы должны убедиться, что ваш список аргументов и проверки наргина совпадают.

Следует помнить, что все входы являются необязательными, но функции будут выходить с ошибкой, если она вызывает переменную, которая не задана. В следующем примере устанавливаются значения по умолчанию для b и c. Выйдет, если a нет.

function [ output_args ] = input_example( a, b, c )
if nargin < 1
  error('input_example :  a is a required input')
end

if nargin < 2
  b = 20
end

if nargin < 3
  c = 30
end
end