Эта тема показывает способы задать функции валидации, которые вы передаете Входному Синтаксическому анализатору, чтобы проверить пользовательские входные параметры функции.
Входные методы Синтаксического анализатора addRequired
, addOptional
и addParameter
каждый принимает дополнительный указатель на функцию валидации. Определяйте указатели на функцию с в (@
) символ.
Функции валидации должны принять единственный входной параметр, и они должны или возвратить скалярное логическое значение (true
или false
) или ошибка. Если функция валидации возвращает false
, Входной Синтаксический анализатор выдает ошибку, и ваша функция прекращает обрабатывать.
Существует несколько способов задать функции валидации:
Используйте существующую функцию MATLAB®, такую как ischar
или isnumeric
. Например, проверьте, что необходимый входной параметр под названием num
является числовым:
p = inputParser; checknum = @isnumeric; addRequired(p,'num',checknum) parse(p,'text')
The value of 'num' is invalid. It must satisfy the function: isnumeric.
Создайте анонимную функцию. Например, проверьте, что входной параметр num
является числовым скаляром, больше, чем нуль:
p = inputParser;
checknum = @(x) isnumeric(x) && isscalar(x) && (x > 0);
addRequired(p,'num',checknum)
parse(p,rand(3))
The value of 'num' is invalid. It must satisfy the function: @(x) isnumeric(x) && isscalar(x) && (x>0).
Задайте свою собственную функцию, обычно локальная функция в том же файле как ваша первичная функция. Например, в файле с именем usenum.m
, задайте локальную функцию под названием checknum
, который выпускает пользовательские сообщения об ошибке, когда входной параметр num
к usenum
не является числовым скаляром, больше, чем нуль:
function usenum(num) p = inputParser; addRequired(p,'num',@checknum); parse(p,num); function TF = checknum(x) TF = false; if ~isscalar(x) error('Input is not scalar'); elseif ~isnumeric(x) error('Input is not numeric'); elseif (x <= 0) error('Input must be > 0'); else TF = true; end
Вызовите функцию с недопустимым входным параметром:
usenum(-1)
Error using usenum (line 4) The value of 'num' is invalid. Input must be > 0
inputParser
| is*
| validateattributes