mustBeNonNan

Подтвердите, что значение равно nonNaN

Синтаксис

Описание

пример

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

mustBeNonNan принимает пользовательские объекты, если класс объекта реализует этот метод:

Примеры

свернуть все

Используйте 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 к nonNaN значениям.

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 isnan.

Эта функция объявляет входной параметр, который должен быть вектором, удваивается содержащий 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
Поддержка комплексного числа: Да

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте