メインコンテンツ

mustBeNonNan

入力が NaN を含むことを検証する

説明

mustBeNonNan(value) は、valueNaN が含まれている場合にエラーをスローします。この関数は値を返しません。

mustBeNonNan は、anynan 関数を呼び出して、入力が NaN を含むかどうかを判別します。

クラス サポート: すべての数値クラス、logicalchardurationcalendarDuration、および anynan または isnan をオーバーロードする MATLAB® クラス。

すべて折りたたむ

mustBeNonNan を使用して、配列のすべての要素が NaN でないことを検証します。

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

00 で除算すると NaN となり、配列値には NaN である要素が 1 つ含まれるため、エラーが発生します。

このクラスは 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 を呼び出します。00 で除算すると NaN になるため、mustBeNonNan はエラーを発行します。

この関数は、入力引数が NaN の要素を含まない double のベクトルでなければならないことを宣言します。

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 数値クラス、logicalcharduration、または calendarDuration

  • anynan または isnan をオーバーロードするすべての MATLAB クラス

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | duration | calendarDuration
複素数のサポート: あり

ヒント

  • mustBeNonNan は、プロパティと関数の引数の検証で使用されるように設計されています。

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2017a で導入

すべて展開する