exponenta event banner

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