Main Content

mustBeFinite

値が有限であることを検証

説明

mustBeFinite(value) は、value が有限でない場合にエラーをスローします。数値は NaNInf のいずれでもない場合、有限です。この関数は値を返しません。

mustBeFinite は以下の関数を呼び出して、入力が有限であるかどうかを判別します。

クラス サポート: すべての数値クラス、logicalchar、および isfinite をオーバーロードする MATLAB® クラス。

この関数は空の値である入力引数を無視します。このため、プロパティ値または関数の引数値が空の場合、エラーはスローされません。

すべて折りたたむ

mustBeFinite を使用して、配列のすべての要素が NaNInf のいずれでもないことを検証します。

d = 0:9;
A = 1./d;
mustBeFinite(A)
Value must be finite.

d で除算すると、1 つの要素が Inf になり、エラーが発生します。

このクラスは Prop1 の値を有限値に制限します。

classdef MyClass
   properties
      Prop1 {mustBeFinite}
   end
end

オブジェクトを作成して、プロパティに値を割り当てます。

d = 0:9;
obj = MyClass;
obj.Prop1 = 1./d;
Error setting property 'Prop1' of class 'MyClass'. Value must be finite.

プロパティに値を割り当てると、MATLAB はプロパティに割り当てた値を使用して mustBeFinite を呼び出します。0 で除算した結果は Inf になるため、mustBeFinite はエラーを発行します。

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

function s = mbFinite(x)
    arguments
        x (1,:) double {mustBeFinite}
    end
    n = length(x);
    m = sum(x)/n;
    s = sqrt(sum((x-m).^2/n));
end

mustBeFinite の要件を満たさない入力を指定して関数を呼び出すと、エラーになります。

values = [12.7, 45.4, 98.9, Inf, 53.1];
s = mbFinite(values);
Error using mbFinite
 s = mbFinite(values);
              ↑
Invalid input argument at position 1. Value must be finite.

入力引数

すべて折りたたむ

検証する値。スカラーまたは次のいずれかの配列として指定します。

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

ヒント

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

拡張機能

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

バージョン履歴

R2017a で導入