nargin
определенно самый простой способ сделать это. Также обычно рекомендуется проверять количество входных аргументов с помощью nargchk :
function e = testFunc(a,b,c,d)
error( nargchk(2, 4, nargin, 'struct') );
% set default values
if nargin<4, d = 0; end
if nargin<3, c = 0; end
% ..
c = a*b + c*d;
end
... который служит способом обеспечить правильное количество аргументов. В этом случае требуется минимум два аргумента, максимум four .
Если nargchk
не обнаруживает ошибки, выполнение возобновляется нормально, в противном случае генерируется ошибка. Например, вызов testFunc(1)
создает:
Not enough input arguments.
ОБНОВЛЕНИЕ: в R2011b была введена новая функция narginchk
, которая заменяет использование устаревшего nargchk
+ error
, показанного выше:
narginchk(2,4);
Вы можете использовать такие функции, как: существующие и isempty , чтобы проверить, существует ли переменная и является ли она пустой соответственно:
if ~exist('c','var') || isempty(c)
c = 10;
end
, которая позволяет вам вызывать вашу функцию, такую как: testFunc(1,2,[],4)
, говорящая ей использовать значение по умолчанию для c
, но все равно давая значение для d
Вы также можете использовать varargin , чтобы принять переменное число аргументов.
Наконец, мощный способ для анализа и проверки именованных входов - это использование inputParser
Чтобы увидеть примеры и другие варианты передачи аргументов и установки значений по умолчанию, посмотрите этот пост и его комментарии.