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.

Эта функция объявляет входной параметр, которая должна быть вектором с двойным числом, не содержащим 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++ с помощью Coder™ MATLAB ®

.
Введенный в R2017a