主要内容

mustBeNonNan

验证输入包含 NaN

说明

如果 value 包含 NaN,则 mustBeNonNan(value) 会抛出错误。此函数不返回值。

mustBeNonNan 调用 anynan 函数来确定输入是否包含 NaN

支持的类:重载 anynanisnan 的所有数值类、logicalchardurationcalendarDuration 和 MATLAB® 类。

示例

示例

全部折叠

使用 mustBeNonNan 验证任何数组元素均不为 NaN

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

00 除等于 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 会使用赋给属性的值调用 mustBeNonNanmustBeNonNan 将引发错误,因为 00 除的结果是 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 (line 3)
 s = mbNonNan(values);
              ^^^^^^
Invalid argument at position 1. Value must not be NaN.

输入参数

全部折叠

要验证的值,指定为标量或由以下类型之一的值组成的数组:

  • 所有 MATLAB 数值类、logicalchardurationcalendarDuration

  • 所有重载 anynanisnan 的 MATLAB 类

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | duration | calendarDuration
复数支持:

提示

  • mustBeNonNan 用于属性和函数参量验证。

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2017a 中推出

全部展开