输入解析器验证函数
本主题介绍定义验证函数的方式,该验证函数要传递到输入解析器以检查自定义函数输入。
输入解析器方法 addRequired
、addOptional
和 addParameter
都可接受验证函数的句柄。通过 @
符号指定函数句柄。
验证函数必须接受单个输入参量,还必须返回标量逻辑值(true
或 false
)或错误。如果验证函数返回 false
,输入解析器将发出错误并且您的函数停止处理。
可以通过以下多种方式定义验证函数:
使用现有的 MATLAB® 函数,例如
ischar
或isnumeric
。例如,检查名称为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
另请参阅
inputParser
| validateattributes