Main Content

入力パーサーの検証関数

このトピックでは、カスタム関数の入力をチェックするために入力パーサーに渡す検証関数を定義する方法を示します。

入力パーサー メソッド addRequiredaddOptional および addParameter は、それぞれオプションとして検証関数へのハンドルを受け入れます。関数ハンドルはアット記号 (@) を使って指定します。

検証関数は 1 つの入力引数を受け入れて、スカラー論理値 (truefalse) またはエラーを返さなければなりません。検証関数により false が返されると、入力パーサーがエラーを出力し、関数の処理は停止します。

検証関数を定義する方法はいくつかあります。

  • ischarisnumeric などの既存の 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

参考

|

関連する例

詳細