入力パーサーの検証関数
このトピックでは、カスタム関数の入力をチェックするために入力パーサーに渡す検証関数を定義する方法を示します。
入力パーサー メソッド addRequired
、addOptional
および addParameter
は、それぞれオプションとして検証関数へのハンドルを受け入れます。関数ハンドルはアット記号 (@
) を使って指定します。
検証関数は 1 つの入力引数を受け入れて、スカラー論理値 (true
か false
) またはエラーを返さなければなりません。検証関数により false
が返されると、入力パーサーがエラーを出力し、関数の処理は停止します。
検証関数を定義する方法はいくつかあります。
ischar
やisnumeric
などの既存の MATLAB® 関数を使用します。たとえば、num
という必須入力が数値であるかどうかをチェックします。p = inputParser; checknum = @isnumeric; addRequired(p,'num',checknum) parse(p,'text')
The value of 'num' is invalid. It must satisfy the function: isnumeric.
無名関数を作成します。たとえば、入力
num
がゼロより大きい数値スカラーであるかどうかをチェックします。p = inputParser; checknum = @(x) isnumeric(x) && isscalar(x) && (x > 0); addRequired(p,'num',checknum) parse(p,rand(3))
The value of 'num' is invalid. It must satisfy the function: @(x) isnumeric(x) && isscalar(x) && (x>0).
独自の関数を定義します。通常は、基本関数と同じファイルのローカル関数となります。たとえば、
usenum.m
というファイルで、usenum
に入力されたnum
がゼロより大きい数値スカラーでない場合にカスタム エラー メッセージを表示するように、checknum
というローカル関数を定義します。function usenum(num) p = inputParser; addRequired(p,'num',@checknum); parse(p,num); function TF = checknum(x) TF = false; if ~isscalar(x) error('Input is not scalar'); elseif ~isnumeric(x) error('Input is not numeric'); elseif (x <= 0) error('Input must be > 0'); else TF = true; end
無効な入力を指定して関数を呼び出します。
usenum(-1)
Error using usenum (line 4) The value of 'num' is invalid. Input must be > 0
参考
inputParser
| validateattributes