主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

プロパティの検証関数

MATLAB検証関数

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

数値属性

名前

意味

入力で呼び出される関数

mustBePositive(值)

取值为> 0

gt伊斯雷尔isnumericislogical

mustBeNonpositive(值)

值<= 0

通用电气伊斯雷尔isnumericislogical

mustBeNonnegative(值)

取值>= 0

通用电气伊斯雷尔isnumericislogical

mustBeNegative(值)

值< 0

lt伊斯雷尔isnumericislogical

mustBeFinite(值)

价值には,要素も要素もない。

isfinite

mustBeNonNan(值)

价值には要素がない。

isnan

mustBeNonzero(值)

值~= 0

情商isnumericislogical

mustBeNonsparse(值)

价值にはスパ,ス要素がない。

issparse

mustBeReal(值)

价值には虚数部がない。

伊斯雷尔

mustBeInteger(值)

Value == floor(Value)

伊斯雷尔isfinite地板上isnumericislogical

mustBeNonmissing(值)

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

ismissing

他の値との比較

名前

意味

入力で呼び出される関数

mustBeGreaterThan(价值,c)

值为>

gtisscalar伊斯雷尔isnumericislogical

mustBeLessThan(价值,c)

值< c

lt伊斯雷尔isnumericislogical

mustBeGreaterThanOrEqual(价值,c)

取值>= c

通用电气伊斯雷尔isnumericislogical

mustBeLessThanOrEqual(价值,c)

值<= c

伊斯雷尔isnumericislogical

デタ型

名前

意味

入力で呼び出される関数

mustBeA(价值,类名)

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

クラス定義の関係を使用

mustBeNumeric(值)

价值は数値でなければならない。

isnumeric

mustBeNumericOrLogical(值)

价值は数値または逻辑でなければならない。

isnumericislogical

mustBeFloat(值)

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

isfloat

mustBeUnderlyingType(typename价值)

价值には,基となる型が指定されていなければならない。

isUnderlyingType

サereplicationズ

名前

意味

入力で呼び出される関数

mustBeNonempty(值)

价值は空ではない。

isempty

mustBeScalarOrEmpty(值) 价值はスカラ,または空でなければならない。

isscalarisempty

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

isvector

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

名前

意味

入力で呼び出される関数

mustBeMember(价值)

价值年代のメンバ,の完全一致である。

ismember

mustBeInRange(价值低,上部,boundflags) 价值は範囲内になければならない。

gt通用电气lt

テキスト

名前

意味

入力で呼び出される関数

mustBeFile(路径)

路径はファ@ @ルを参照しなければならない。

isfile

mustBeFolder(文件夹) 路径はフォルダ,を参照しなければならない。

isfolder

mustBeNonzeroLengthText(值)

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

該当なし

mustBeText(值)

价值は字符串配列,文字ベクトル,または文字ベクトルの单元格配列でなければならない。

該当なし

mustBeTextScalar(值)

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

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

isvarname

関数を使用したプロパティの検証

クラス定義でプロパティの検証関数を使用して,プロパティ値に特定の制限を課します。関数によって課される特定の要件をプロパティ値が満たさない場合、検証関数は潜在的なプロパティ値を引数として受け入れ、エラーを発行します。

検証プロセス中,matlabはクラス定義にリストされている各検証関数に値を渡します。MATLABは各関数を左から右の順序で呼び出し、最初に見つかったエラーをスローします。検証関数に渡される値は、クラスとサイズの指定によって適用された変換の結果です。クラスとサイズの検証の詳細については、プロパティのクラスとサ@ @ズの検証を参照してください。

Matlab検証関数の一覧にいては,Matlab検証関数を参照してください。

検証関数の構文

検証関数を,関数名または引数のある関数呼び出しのコンマ区切りリストとして,中かっこで囲んで指定します。

classdefMyClass属性道具{fcn1, fcn2,...} = defaultValue结束结束

Matlabは潜在的なプロパティ値を暗黙的に検証関数に渡します。ただし,検証関数が潜在的なプロパティ値に加えて入力引数も必要とする場合,プロパティと追加引数の両方を含めなければなりません。追加引数はリテラル値でなければならず,変数を参照できません。リテラル値は数字やテキストなどの非シンボリック表現です。

たとえば,関数mustBeGreaterThanにいて考えます。入力パラメ,タ,として下限値が必要です。この検証関数では,プロパティ値がこの下限値より大きくなければなりません。

プロパティを最初の引数として渡します。プロパティ名を使用しますが、引用符で囲まないでください。このプロパティ定義は、道具10より大きい値に制限します。

属性道具{mustBeGreaterThan(道具,10)}结束

検証関数の使用

以下のクラスで各プロパティの検証関数を指定します。

  • 数据は数値で有限でなければならない。

  • 插值函数はリストされている3のオプションのいずれかでなければならない。このプロパティの既定値を指定してこの要件を満たします。

classdefValidatorFunction属性数据{mustBeNumeric, mustBeFinite}插值函数{mustBeMember(插值函数,{“线性”、“立方”、“花键”})}“线性”结束结束

クラスの既定オブジェクトを作成すると初期値が表示されます。

a = ValidatorFunction
a = ValidatorFunction与属性:Data: [] Interp: 'linear'

プロパティに値を代入すると検証関数が呼び出されます。

a.Data =“立方”
设置类'ValidatorFunction'的属性'Data'错误:值必须是数值。

数据プロパティ検証には数値クラスが含まれないため,字符ベクトルの数値への変換はありません。数据プロパティの検証を変更してクラスをとして指定する場合,matlabは字符ベクトルを配列に変換します。

属性数据{mustBeNumeric, mustBeFinite}结束

MATLABが字符ベクトルをクラスに変換するため,字符ベクトルへの代入を行ってもエラ,は生成されません。

a.Data =“立方”
a = ValidatorFunction与属性:数据:[99 117 98 105 99]Interp: '线性'

插值函数プロパティへの代入では完全一致が必要です。

a = ValidatorFunction;a.Interp =“铜”
错误设置'ValidatorFunction'类的属性'Interp': Value必须是这个线性三次样条集的成员

列挙クラスを使用すると,大文字小文字を区別しないあいまい一致を利用できます。

あいまい一致のための列挙クラス

列挙クラスを使用するプロパティ検証には,次の利点があります。

  • 明確なcharベクトルまたは字符串スカラーに対する,大文字小文字を区別しないあいまい一致

  • あいまい一致から正確な値への変換

たとえば,插值函数プロパティの検証用にInterpMethod列挙クラスを定義するとします。

classdefInterpMethod枚举线性三次样条结束结束

InterpMethodクラスを使用するために插值函数プロパティの検証を変更します。

classdefValidatorFunction属性数据{mustBeNumeric, mustBeFinite}插值函数InterpMethod结束结束

“立方”の最初の数文字に一致する値を代入します。

a = ValidatorFunction;a.Interp =“铜”
a = ValidatorFunction属性:Data: [] Interp: cubic

検証関数の定義

検証関数は,プロパティ値と関数の引数値を検証するという特定の目的のために設計された通常のMATLAB関数です。プロパティの検証に使用される関数は,次を行います。

  • 潜在的なプロパティ値を入力引数として受け入れる

  • 値を返さない

  • 検証に失敗した場合はエラ,をスロ,する

MATLAB検証関数を使用して実行できない特定の検証を行う場合,独自の検証関数を作成すると便利です。ローカル関数をクラスファイル内に作成したり,任意のクラスで使用できるように関数をMATLABパス上に配置することができます。

たとえば,ImgDataクラスはロ,カル関数を使用して,サブクラスを除く数据プロパティをuint8またはuint16の値のみに制限し,他の数値クラスからの変換を許可しない検証関数を定義します。事前定義された検証関数mustBeInRangeは,使用可能な値の範囲を制限します。

classdefImgData属性数据{mustBeImData(数据),mustBeInRange(0255年数据)}= uint8 (0)结束结束函数mustBeImData (a)检查特定的类如果~ (strcmp (cname,“uint8”) || strcmp(cname,“uint16”eidType =“ImData: notUint8OrUint16”;msgType =赋给Data属性的值不是uint8或uint16 Data。;throwAsCaller (MException (eidType, msgType))结束结束

ImgDataクラスのaapl . exeンスタンスを作成するときに,matlabは既定値が255年0…の範囲にあり,空でないuint8またはuint16の値であることを検証します。この既定値は,プロパティに代入する他の値と同様に,検証の要件を満たさなければならない点に注意してください。

a = ImgData
a = ImgData,属性:Data: 0

プロパティへの代入を行うと,検証関数が左から右の順序で呼び出されます。字符ベクトルを数据プロパティに代入すると,mustBeImDataによってエラ,がスロ,されます。

a.Data =“红色”
设置类“ImgData”的属性“Data”错误。赋给Data属性的值不是uint8或uint16 Data。

範囲外の数値を代入すると,mustBeInRangeによってエラ,がスロ,されます。

a.Data = uint16(312);
设置类“ImgData”的属性“Data”错误。Value必须大于或等于0,小于或等于255。

関連する関数にいては,mustBeIntegermustBeNumericおよびmustBePositiveを参照してください。

検証関数のサポ,トの追加

依存関数をクラスのメソッドとして実装することにより,クラスのオブジェクトでMATLAB検証関数がサポートされるようにします。各関数に実装するメソッドを決定するには,このMatlab検証関数の表にリストされている検証関数のリファレンスペ,ジを参照してください。

たとえば,クラスでmustBeGreaterThan検証関数がサポ,トされるようにするとします。以下のmatlab関数をクラスでメソッドとしてオバロドします。

  • 伊斯雷尔- - - - - -mustBeGreaterThanは複素数をサポ,トしないため,常に論理値真正的を返します。

  • gt- - - - - -mustBeGreaterThanの要件として,比較の2番目のオブジェクトはスカラ,でなければなりません。

金宝appSupportmBGTクラスがmustBeGreaterThanのサポ,トを実装します。

classdef金宝appSupportmBGT属性道具(1,1)双{mustBeReal}结束方法函数obj = 金宝appSupportmBGT(数据)如果Nargin > 0 obj。道具=数据;结束结束函数Tf =以色列(obj) Tf = true;结束函数Tf = gt(obj1, obj2) Tf = [obj1(:)。道具]> obj2.道具;结束结束结束

このクラスのオブジェクトに対してmustBeGreaterThanを使用します。

a = 金宝appSupportmBGT(10);b = 金宝appSupportmBGT(12);mustBeGreaterThan (a, b)
使用mustBeGreaterThan的错误(第19行)Value必须大于比较值。

関連するトピック