exponenta event banner

mustBeNonNan

Проверьте, что значение не равно NaN

Описание

пример

mustBeNonNan(value) выдает ошибку, если value является NaN. Эта функция не возвращает значение.

mustBeNonNan вызывает следующую функцию, чтобы определить, не является ли ввод NaN:

Поддержка классов: Все числовые классы, logicalи классы MATLAB ®, которые перегружаютisnan.

Примеры

свернуть все

Использовать mustBeNonNan для проверки отсутствия элементов массива NaN.

A = 0./[-2 -1 0 1 2];
mustBeNonNan(A)
Error using mustBeNonNan (line 13)
Value must not be NaN.

Разделение 0 около 0 равно NaN таким образом, значение массива содержит один элемент, который NaN, что приводит к ошибке.

Этот класс ограничивает значение Prop1 к значениям, отличным от NaN.

classdef MyClass
   properties
      Prop1 {mustBeNonNan}
   end
end

Создание объекта и назначение значения Prop1.

obj = MyClass;
obj.Prop1 = 0./[-2 -1 0 1 2];
Error setting property 'Prop1' of class 'MyClass':
Value must not be NaN.

При назначении значения свойству вызов MATLAB mustBeNonNan со значением, назначенным свойству. mustBeNonNan выдает ошибку из-за разделения 0 около 0 является NaN.

Эта функция объявляет входной аргумент, который должен быть вектором двойников, содержащих no NaN элементы.

function s = mbNonNan(x)
    arguments
        x (1,:) double {mustBeNonNan}
    end
    n = length(x);
    m = sum(x)/n;
    s = sqrt(sum((x-m).^2/n));
end

Вызов функции с вводом, не соответствующим требованию mustBeNonNan приводит к ошибке.

values = [12.7, 45.4, 98.9, NaN, 53.1];
s = mbNonNan(values);
Error using mbNonNan
Invalid input argument at position 1. Value must not be NaN.

Входные аргументы

свернуть все

Значение для проверки, указанное как скаляр или массив одного из следующих значений:

  • Все числовые классы MATLAB и logical.

  • Определяемые пользователем классы MATLAB, реализующие isnan

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Поддержка комплексного номера: Да

Совет

  • mustBeNonNan предназначен для использования при проверке аргументов свойств и функций.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2017a