ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

addOptional

クラス: inputParser

入力パーサー スキームへのオプション位置引数の追加

構文

addOptional(p,argName,default)
addOptional(p,argName,default,validationFcn)

説明

addOptional(p,argName,default) は、オプション入力 argNameinputParser オブジェクト p の入力パーサー スキームに追加します。チェックする入力にこのオプション入力の値が含まれていない場合、入力パーサーは default 値を入力に代入します。

addOptional(p,argName,default,validationFcn) は入力引数の検証関数を指定します。

ヒント

  • オプションの文字列入力の場合は、検証関数を指定します。検証関数がないと、入力パーサーは有効な文字列入力であってもそれを無効なパラメーター名として解釈し、エラーを発行します。

  • 入力パーサー スキームに個々の引数を追加するには、addOptional を使用します。オプションの名前と値のペアを解析する場合は、addParameter を使用します。

入力引数

p

クラス inputParser のオブジェクト。

argName

入力引数の内部名を指定する文字列。

addOptional で追加された引数は位置を示します。位置入力を使用して関数を呼び出した場合は、

  • 入力パーサー スキームに追加される場合と同じ順序で入力を指定します。

  • k 番目の引数に対して値を指定するには、最初の (k–1) 個の引数の値を入力スキームに代入します。

default

入力の既定値です。この値は任意のデータ型にできます。

validationFcn

入力引数が有効であるかどうかを確認する関数のハンドル。

inputParser は、2 種類の検証関数を受け入れます。true または false を返す関数と、エラーを渡すまたはスローする関数です。どちらのタイプの検証関数も、1 つの入力引数を受け入れなければなりません。

すべて展開する

オプション入力を追加

inputParser オブジェクトを作成して、入力スキームに 0 の既定値を指定して myinput という名前のオプション入力を追加します。

p = inputParser;
argName = 'myinput';
default = 0;
addOptional(p,argName,default);

オプション入力を検証

既定値 1 をもつ num という名前のオプション入力が、ゼロよりも大きい数値スカラーであるかどうかをチェックします。

p = inputParser;
argName = 'num';
default = 1;
validationFcn = @(x) isnumeric(x) && isscalar(x) && (x > 0);
addOptional(p,argName,default,validationFcn);

構文 @(x) は 1 つの入力のある無名関数のハンドルを作成します。

-1 などの無効な入力を解析しようとします。

parse(p,-1)
The value of 'num' is invalid. It must satisfy the function: @(x)isnumeric(x)&&isscalar(x)&&(x>0).

validateattributes でのオプション入力の検証

オプション入力が正の偶数値であることをテストするために、inputParser オブジェクトを作成し、validateattributes を使用して検証関数を定義します。スキームに必須入力を追加します。

p = inputParser;
argName = 'evenPosNum';
default = 1;
validationFcn = @(x) validateattributes(x,{'numeric'},...
    {'even','positive'}); 
addOptional(p,argName,default,validationFcn);

入力文字列を解析します。解析は失敗します。

parse(p,'hello')
The value of 'evenPosNum' is invalid. Expected input to be one of these types:

double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64

Instead its type was char.

奇数を解析します。解析は失敗します。

 parse(p,13)
The value of 'evenPosNum' is invalid. Expected input to be even.

偶数の正の数値を解析します。解析はパスします。

parse(p,42)
この情報は役に立ちましたか?