11.9.2验证参数的类型

除了参数的数量之外,还可以检查输入的各种属性。validatestring用于字符串参数和validateattributes用于数字参数。

 
:validstr= validatestring (str,strarray)
:validstr= validatestring (str,strarray,funcname)
:validstr= validatestring (str,strarray,funcname,varname)
:validstr= validatestring (…,position)

验证str是中的元素或元素的子字符串strarray.

str是要测试的字符串,并且strarray是一个有效值的字符串数组,那么validstr将是的验证形式str其中验证定义为str成为的成员或子串validstr。这对于验证和扩展空头参数都很有用,例如"r",转换为较长的形式,例如"red"如果str是的子字符串validstr,并且有多个匹配,如果所有匹配都是彼此的子字符串,则将返回最短的匹配。否则,错误将受到谴责,因为的扩展str模棱两可。所有比较都不区分大小写。

附加输入funcname,varnameposition是可选的,这将使任何生成的验证错误消息更加具体。

示例:

validatestring ("r", {"red", "green", "blue"})
⇒ "red"

validatestring ("b", {"red", "green", "blue", "black"})
⇒ error: validatestring: multiple unique matches were found for 'b':
   blue, black

详见: strcmp,strcmpi,validateattributes,inputParser.

广告
 
:validateattributes (A,classes,attributes)
:validateattributes (A,classes,attributes,arg_idx)
:validateattributes (A,classes,attributes,func_name)
:validateattributes (A,classes,attributes,func_name,arg_name)
:validateattributes (A,classes,attributes,func_name,arg_name,arg_idx)

检查输入参数的有效性。

确认参数A通过属于其中一个而有效classes,并持有所有attributes。如果没有,则抛出错误,并相应地格式化消息。可以通过函数名称使错误消息更加完整fun_name,参数名称arg_name,及其在输入中的位置arg_idx.

classes必须是字符串的元胞数组(不允许使用空元胞数组)和类的名称(记住类名区分大小写)。除了类名之外,以下类别名称也是有效的:

"float"

包含类的浮点值"double""single".

广告
"integer"

整数值,包括类(u)int8、(u)int 16、(u)int 32和(u)int64。

广告
"numeric"

包含浮点值或整数值的数值。

广告

attributes必须是具有检查名称的元胞数组A。其中一些要求在该日期后立即提供附加值(详见下面的每个详细信息)。

"<="

中的所有值都小于或等于以下值attributes.

广告
"<"

中的所有值都小于以下值attributes.

广告
">="

中的所有值都大于或等于以下值attributes.

广告
">"

中的所有值都大于以下值attributes.

广告
"2d"

二维矩阵。注意向量和空矩阵有二维,其中一个长度为1,或者两个长度都为0。

广告
"3d"

不超过3个维度。2维矩阵是3维长度为1的3维矩阵。

广告
"binary"

所有值都是1或0。

广告
"column"

值排列在一列中。

广告
"decreasing"

没有值是NaN,并且每个都小于前一个。

广告
"diag"

值是一个对角矩阵。

广告
"even"

所有值都是偶数。

广告
"finite"

所有值都是有限的。

广告
"increasing"

没有值是NaN,并且每个都大于前一个。

广告
"integer"

所有值都是整数。这与使用不同isinteger其仅检查其为整数类型。这将检查中的每个值A是一个整数值,即没有小数部分。

广告
"ncols"

具有与中的下一个值完全相同的列数attributes.

广告
"ndims"

具有与中的下一个值完全相同的维度attributes.

广告
"nondecreasing"

没有值是NaN,并且每个都大于或等于前一个。

广告
"nonempty"

它不是空的。

广告
"nonincreasing"

没有值是NaN,并且每个都小于或等于前一个。

广告
"nonnan"

没有值是NaN.

广告
"nonnegative"

所有值均为非负值。

广告
"nonsparse"

它不是一个稀疏矩阵。

广告
"nonzero"

没有值为零。

广告
"nrows"

具有与中的下一个值完全相同的行数attributes.

广告
"numel"

具有与中的下一个值完全相同的元素数attributes.

广告
"odd"

所有值都是奇数。

广告
"positive"

所有值都是正值。

广告
"real"

它是一个非复杂矩阵。

广告
"row"

值排列在一行中。

广告
"scalar"

它是一个标量。

广告
"size"

其大小的长度等于中下一个的值attributes。下一个值必须是具有每个维度的长度的数组。若要忽略对某个维度的检查,则的值NaN可以使用。

广告
"square"

是一个正方阵。

广告
"vector"

值排列在单个向量(列或向量)中。

广告

详见: isa,validatestring,inputParser.

广告

作为的替代方案validateattributes有几个方便快捷的函数来检查各个属性。

 
:mustBeFinite (x)

要求输入x是有限的。

如果输入的任何元素都会引发错误x不是有限的,从isfinite (x).

详见: mustBeNonNan,isfinite.

广告
 
:mustBeGreaterThan (x,c)

要求输入x大于c.

如果输入的任何元素都会引发错误x不大于c,从确定x>c.

详见: mustBeGreaterThanOrEqual,mustBeLessThan,gt.

广告
 
:mustBeGreaterThanOrEqual (x,c)

要求输入x大于或等于c.

如果输入的任何元素都会引发错误x不大于或等于c,从确定x>=c.

详见: mustBeGreaterThan,mustBeLessThanOrEqual,ge.

广告
 
:mustBeInteger (x)

要求输入x是整数值的(但不一定是整数类型的)。

如果输入的任何元素都会引发错误x不是从各种检查确定的有限、实数、整数值。

详见: mustBeNumeric.

广告
 
:mustBeLessThan (x,c)

要求输入x小于c.

如果输入的任何元素都会引发错误x不小于c,从确定x<c.

详见: mustBeLessThanOrEqual,mustBeGreaterThan,lt.

广告
 
:mustBeLessThanOrEqual (x,c)

要求输入小于或等于给定值。

如果输入的任何元素都会引发错误x不小于或等于c,从确定x<=c.

详见: mustBeLessThan,mustBeGreaterThanOrEqual,le.

广告
 
:mustBeMember (x,valid)

要求输入x是一组给定有效值的成员。

如果输入的任何元素都会引发错误x不是集合的成员valid,从确定ismember(x).

编程注意:从于调用时字符和单元字符串之间的相互作用,字符输入可能会表现得很奇怪ismember在他们身上。但如果你只是自然地使用它,它可能会“为所欲为”。为了保证操作,使用将所有char数组转换为数组字符串cellstr.

详见: mustBeNonempty,ismember.

广告
 
:mustBeNegative (x)

要求输入x是负数。

如果输入的任何元素都会引发错误x不是负数,从确定x< 0.

详见: mustBeNonnegative.

广告
 
:mustBeNonempty (x)

要求输入x不是空的。

如果输入x为空,从确定isempty(x).

详见: mustBeMember,mustBeNonzero,isempty.

广告
 
:mustBeNonNan (x)

要求输入x不是-NaN.

如果输入的任何元素都会引发错误xNaN,从确定不是吗(x).

详见: mustBeFinite,mustBeNonempty,isnan.

广告
 
:mustBeNonnegative (x)

要求输入x不是否定的。

如果输入的任何元素都会引发错误x为负,从确定x>= 0.

详见: mustBeNonzero,mustBePositive.

广告
 
:mustBeNonpositive (x)

要求输入x不是正的。

如果输入的任何元素都会引发错误x为阳性,从确定x<= 0.

详见: mustBeNegative,mustBeNonzero.

广告
 
:mustBeNonsparse (x)

要求输入x不是稀疏的。

如果输入x是稀疏的,从确定issparse(x).

详见: issparse.

广告
 
:mustBeNonzero (x)

要求输入x不是零。

如果输入的任何元素都会引发错误x为零,从确定x== 0.

详见: mustBeNonnegative,mustBePositive.

广告
 
:mustBeNumeric (x)

要求输入x是数字。

如果输入x不是数字,从确定是数字的(x).

详见: mustBeNumericOrLogical,isnumeric.

广告
 
:mustBeNumericOrLogical (x)

要求输入x是数字的或逻辑的。

如果输入x不是数字或逻辑,从确定是数字的(x)||不合逻辑(x).

详见: mustBeNumeric,isnumeric,islogical.

广告
 
:mustBePositive (x)

要求输入x是积极的。

如果输入的任何元素都会引发错误x不是正的,从确定x> 0.

详见: mustBeNonnegative,mustBeNonzero.

广告
 
:mustBeReal (x)

要求输入x是真实的。

如果输入x不是真实的,从确定以色列(x).

详见: mustBeFinite,mustBeNonNan,isreal.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2