В этом разделе показаны способы определения функций проверки, передаваемых анализатору входных данных для проверки входных данных пользовательских функций.
Методы анализатора входных данных addRequired, addOptional, и addParameter каждый принимает необязательный дескриптор функции проверки. Обозначить дескрипторы функций с at (@) символ.
Функции проверки должны принимать один входной аргумент и возвращать скалярное логическое значение (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