Main Content

引数の検証関数

MATLAB は引数の検証に使用する関数を定義します。これらの関数は、検証のための一般的な使用パターンをサポートし、説明的なエラー メッセージを提供します。以下の表で、MATLAB® 検証関数を分類し、その使用方法を説明しています。

数値属性

名前

意味

入力で呼び出される関数

mustBePositive(value)

value > 0

gtisrealisnumericislogical

mustBeNonpositive(value)

value <= 0

geisrealisnumericislogical

mustBeNonnegative(value)

value >= 0

geisrealisnumericislogical

mustBeNegative(value)

value < 0

ltisrealisnumericislogical

mustBeFinite(value)

value には、NaN 要素も Inf 要素もない。

isfinite

mustBeNonNan(value)

value には NaN 要素がない。

isnan

mustBeNonzero(value)

value ~= 0

eqisnumericislogical

mustBeNonsparse(value)

value にはスパース要素がない。

issparse

mustBeReal(value)

value には虚数部がない。

isreal

mustBeInteger(value)

value == floor(value)

isrealisfinitefloorisnumericislogical

mustBeNonmissing(value)

value は欠損値を含むことができない。

ismissing

他の値との比較

名前

意味

入力で呼び出される関数

mustBeGreaterThan(value,c)

value > c

gtisrealisnumericislogical

mustBeLessThan(value,c)

value < c

ltisrealisnumericislogical

mustBeGreaterThanOrEqual(value,c)

value >= c

geisrealisnumericislogical

mustBeLessThanOrEqual(value,c)

value <= c

le, isreal, isnumeric, islogical

データ型

名前

意味

入力で呼び出される関数

mustBeA(value,classnames)

value は特定のクラスでなければならない。

クラス定義の関係を使用

mustBeNumeric(value)

value は数値でなければならない。

isnumeric

mustBeNumericOrLogical(value)

value は数値または logical でなければならない。

isnumericislogical

mustBeFloat(value)

value は浮動小数点配列でなければならない。

isfloat

mustBeUnderlyingType(value,typename)

value には、基となる型が指定されていなければならない。

isUnderlyingType

サイズ

名前

意味

入力で呼び出される関数

mustBeNonempty(value)

value は空ではない。

isempty

mustBeScalarOrEmpty(value)value はスカラーまたは空でなければならない。

isscalarisempty

mustBeVector(value)value はベクトルでなければならない。

isvector

メンバーシップおよび範囲

名前

意味

入力で呼び出される関数

mustBeMember(value,S)

valueS のメンバーの完全一致である。

ismember

mustBeInRange(value,lower,upper,boundflags)value は範囲内になければならない。

gtgeltle

テキスト

名前

意味

入力で呼び出される関数

mustBeFile(path)

path はファイルを参照しなければならない。

isfile

mustBeFolder(folder)path はフォルダーを参照しなければならない。

isfolder

mustBeNonzeroLengthText(value)

value は非ゼロ長のひとまとまりのテキストでなければならない。

該当なし

mustBeText(value)

value は string 配列、文字ベクトル、または文字ベクトルの cell 配列でなければならない。

該当なし

mustBeTextScalar(value)

value はひとまとまりのテキストでなければならない。

該当なし
mustBeValidVariableName(varname)varname は有効な変数名でなければならない。

isvarname

検証関数の定義

検証関数は、関数またはプロパティに入力する値の要件をチェックする MATLAB 関数です。検証関数は、エラーをスローするタイミングと、どのエラー メッセージを表示するかを決定します。

検証に使用される関数は、以下の設計要素をもちます。

  • 検証関数は、出力を返したり、プログラムの状態を変更したりしません。その唯一の目的は入力値の有効性をチェックすることです。

  • 検証関数は、検証対象の値を入力引数として受け入れなければなりません。関数が複数の入力引数を受け入れる場合、最初の入力が検証対象の値です。

  • 検証関数は入力のみを対象にします。その他の値は関数で使用できません。

  • 検証関数は検証に失敗した場合にエラーをスローします。throwAsCaller を使用して例外をスローすると、表示されるエラー メッセージに検証関数自体が表示されなくなります。

MATLAB 検証関数を使用して実行できない特定の検証を行う場合、独自の検証関数を作成すると便利です。検証関数は、ローカル関数として関数ファイル内に作成するか、MATLAB パス上に配置することができます。エラー メッセージの同時発生を回避するため、関数の引数の検証をユーザー定義の検証関数内で使用しないでください。

たとえば、関数 mustBeRealUpperTriangular は、入力を実数の上三角行列に制限します。この検証関数は、関数 istriu および isreal を使用します。

function mustBeRealUpperTriangular(a)
    if ~(istriu(a) && isreal(a))
        eidType = 'mustBeRealUpperTriangular:notRealUpperTriangular';
        msgType = 'Input must be a real-valued, upper triangular matrix.';
        throwAsCaller(MException(eidType,msgType))
    end
end

入力引数が正しい型ではない場合、関数はエラーをスローします。

a = [1 2 3+2i; 0 2 3; 0 0 1];
mustBeRealUpperTriangular(a)
Input must be a real-valued, upper triangular matrix.

関連するトピック