Валидации аргументов

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 должен быть числовым.

isnumeric

mustBeNumericOrLogical(значение)

value должен быть числовым или логическим.

isnumeric, islogical

mustBeFloat(значение)

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

isfloat

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

value должен иметь указанный базовый тип.

isUnderlyingType

Размер

Имя

Значение

Функции, вызываемые на входах

mustBeNonempty(значение)

value не пуст.

isempty

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

isscalar, isempty

mustBeVector(значение)value должен быть вектором.

isvector

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

Имя

Значение

Функции, вызываемые на входах

mustBeMember(значение, S)

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

ismember

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

gt, ge, lt, le

Текст

Имя

Значение

Функции, вызываемые на входах

mustBeFile(путь)

path должен ссылаться на файл.

isfile

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

isfolder

mustBeNonzeroLengthText(значение)

value должен быть фрагментом текста ненулевой длины.

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

mustBeText(значение)

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

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

mustBeTextScalar(значение)

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

Не применяется
mustBeValidVariableName(varname)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.

Похожие темы