Main Content

输入解析器验证函数

本主题介绍定义验证函数的方式,该验证函数要传递到输入解析器以检查自定义函数输入。

输入解析器方法 addRequiredaddOptionaladdParameter 都可接受验证函数的句柄。通过 @ 符号指定函数句柄。

验证函数必须接受单个输入参数,还必须返回标量逻辑值(truefalse)或错误。如果验证函数返回 false,输入解析器将发出错误并且您的函数停止处理。

可以通过以下多种方式定义验证函数:

  • 使用现有的 MATLAB® 函数,例如 ischarisnumeric。例如,检查名称为 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 的文件中,定义名称为 checknum 的局部函数,用于在 usenum 的输入 num 不是大于零的数值标量时发出自定义的错误消息:

    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

另请参阅

|

相关示例

详细信息