Функции валидации аргумента

MATLAB задает функции для использования в валидации аргумента. Эти функции поддерживают шаблоны общего использования для валидации и предоставляют описательные сообщения об ошибке. Следующие таблицы категоризируют функции валидации MATLAB® и описывают их использование.

Атрибуты числового значения

Имя

Значение

Функции, обращенные входные параметры

mustBePositiveЗначение

value > 0

gt, isreal, isnumeric, islogical

mustBeNonpositiveЗначение

value <= 0

ge, isreal, isnumeric, islogical

mustBeNonnegativeЗначение

value >= 0

ge, isreal, isnumeric, islogical

mustBeNegativeЗначение

value < 0

lt, isreal, isnumeric, islogical

mustBeFiniteЗначение

value не имеет никакого NaN и никакой Inf элементы.

isfinite

mustBeNonNanЗначение

value не имеет никакого NaN элементы.

isnan

mustBeNonzeroЗначение

value ~= 0

eq, isnumeric, islogical

mustBeNonsparseЗначение

value не имеет никаких разреженных элементов.

issparse

mustBeRealЗначение

value не имеет никакой мнимой части.

isreal

mustBeIntegerЗначение

value == floor(value)

isreal, isfinite, floor, isnumeric, islogical

mustBeNonmissingЗначение

value не может содержать отсутствующие значения.

ismissing

Сравнение с другими значениями

Имя

Значение

Функции, обращенные входные параметры

mustBeGreaterThan(значение, c)

value > c

gt, isscalar, isreal, isnumeric, islogical

mustBeLessThan(значение, c)

value < c

lt, isreal, isnumeric, islogical

mustBeGreaterThanOrEqual(значение, c)

value >= c

ge, isreal, isnumeric, islogical

mustBeLessThanOrEqual(значение, c)

value <= c

le, isreal, isnumeric, islogical

Типы данных

Имя

Значение

Функции, обращенные входные параметры

mustBeA(значение, имена классов)

value должен иметь определенный класс.

Отношения определения класса использования

mustBeNumericЗначение

value mustBeNumeric.

isnumeric

mustBeNumericOrLogicalЗначение

value mustBeNumericOrLogical.

isnumeric, islogical

mustBeFloatЗначение

value должен быть массив с плавающей точкой.

isfloat

mustBeUnderlyingType(значение, typename)

value должно быть, задал базовый тип.

isUnderlyingType

Размер

Имя

Значение

Функции, обращенные входные параметры

mustBeNonemptyЗначение

value не пусто.

isempty

mustBeScalarOrEmptyЗначениеvalue должен быть скаляр или быть пустым.

isscalar, isempty

mustBeVectorЗначениеvalue должен быть вектор.

isvector

Членство и область значений

Имя

Значение

Функции, обращенные входные параметры

mustBeMemberЗначения

value точное совпадение для члена S.

ismember

mustBeInRange(значение, ниже, верхнее, boundflags)value должен быть в области значений.

gt, ge, lt, le

Текст

Имя

Значение

Функции, обращенные входные параметры

mustBeFilepath

path должен относиться к файлу.

isfile

mustBeFolder(папка)path должен относиться к папке.

isfolder

mustBeNonzeroLengthTextЗначение

value должна быть часть текста с ненулевой длиной.

Не применяется

mustBeTextЗначение

value должен быть массив строк, вектор символов или массив ячеек из символьных векторов.

Не применяется

mustBeTextScalarЗначение

value должна быть одна часть текста.

Не применяется
mustBeValidVariableNamevarName varname должно быть допустимое имя переменной.

isvarname

Определение функций валидации

Функциями валидации являются функции MATLAB, которые проверяют требования к значениям, вводящим функции или свойства. Функции валидации определяют, когда выдать ошибки и что сообщения об ошибке отобразиться.

Функции, используемые для валидации, имеют эти элементы дизайна:

  • Функции валидации не возвращают выходные параметры или изменяют состояние программы. Единственная цель состоит в том, чтобы проверять валидность входного значения.

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

  • Функции валидации полагаются только на входные параметры. Никакие другие значения не доступны для функции.

  • Функции валидации выдают ошибку, если валидация перестала работать. Используя throwAsCaller выдавать исключения старается не показывать саму функцию валидации в отображенном сообщении об ошибке.

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

Например, mustBeRealUpperTriangular функция ограничивает вход верхними треугольными матрицами с действительным знаком. Функция валидации использует istriu и isreal функции.

function mustBeRealUpperTriangular(a)
    if ~(istriu(a) && isreal(a))
        eidType = 'mustBeRealUpperTriangular:notRealUpperTriangular';
        msgType = 'Input must be a real-valued, upper triangular matrix.';
        throwAsCaller(MException(eidType,msgType))
    end
end

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

a = [1 2 3+2i; 0 2 3; 0 0 1];
mustBeRealUpperTriangular(a)
Input must be a real-valued, upper triangular matrix.

Похожие темы