Main Content

参数验证函数

MATLAB 定义了一些用于参数验证的函数。这些函数支持验证的常用模式,并提供描述性错误消息。下表对 MATLAB® 验证函数进行了分类并描述了它们的用法。

数值属性

名称

含义

对输入调用的函数

mustBePositive(value)

value > 0

gt, isreal, isnumeric, islogical

mustBeNonpositive(value)

value <= 0

ge, isreal, isnumeric, islogical

mustBeNonnegative(value)

value >= 0

ge, isreal, isnumeric, islogical

mustBeNegative(value)

value < 0

lt, isreal, isnumeric, islogical

mustBeFinite(value)

value 中不含 NaNInf 元素。

isfinite

mustBeNonNan(value)

value 中不含 NaN 元素。

isnan

mustBeNonzero(value)

value ~= 0

eq, isnumeric, islogical

mustBeNonsparse(value)

value 中不含稀疏元素。

issparse

mustBeReal(value)

value 没有虚部。

isreal

mustBeInteger(value)

value == floor(value)

isreal, isfinite, floor, isnumeric, islogical

mustBeNonmissing(value)

value 不能包含缺失值。

ismissing

与其他值的比较

名称

含义

对输入调用的函数

mustBeGreaterThan(value,c)

value > c

gt, isreal, isnumeric, islogical

mustBeLessThan(value,c)

value < c

lt, isreal, isnumeric, islogical

mustBeGreaterThanOrEqual(value,c)

value >= c

ge, isreal, isnumeric, islogical

mustBeLessThanOrEqual(value,c)

value <= c

le, isreal, isnumeric, islogical

数据类型

名称

含义

对输入调用的函数

mustBeA(value,classnames)

value 必须为特定类。

使用类定义关系

mustBeNumeric(value)

value 必须为数值。

isnumeric

mustBeNumericOrLogical(value)

value 必须为数值或逻辑值。

isnumeric, islogical

mustBeFloat(value)

value 必须为浮点数组。

isfloat

mustBeUnderlyingType(value,typename)

value 必须具有指定的基础类型。

isUnderlyingType

大小

名称

含义

对输入调用的函数

mustBeNonempty(value)

value 不为空。

isempty

mustBeScalarOrEmpty(value)value 必须为标量或为空。

isscalar, isempty

mustBeVector(value)value 必须为向量。

isvector

成员关系和范围

名称

含义

对输入调用的函数

mustBeMember(value,S)

value 的所有成员都可在 S 中找到。

ismember

mustBeInRange(value,lower,upper,boundflags)value 必须在范围内。

gt, ge, lt, le

文本

名称

含义

对输入调用的函数

mustBeFile(path)

path 必须指向文件。

isfile

mustBeFolder(folder)path 必须指向文件夹。

isfolder

mustBeNonzeroLengthText(value)

value 必须为一段具有非零长度的文本。

不适用

mustBeText(value)

value 必须为字符串数组、字符向量或字符向量元胞数组。

不适用

mustBeTextScalar(value)

value 必须为一段文本。

不适用
mustBeValidVariableName(varname)varname 必须为有效的变量名称。

isvarname

定义验证函数

验证函数是 MATLAB 函数,用于检查传递给函数或属性的值的要求。验证函数确定何时引发错误以及显示什么错误消息。

用于验证的函数具有以下设计元素:

  • 验证函数不返回输出,也不修改程序状态。其唯一目的是检查输入值的有效性。

  • 验证函数必须接受作为输入进行验证的值。如果函数接受多个参数,则第一个输入是要验证的值。

  • 验证函数仅作用于输入。不使用任何其他值。

  • 如果验证失败,验证函数将引发错误。使用 throwAsCaller 引发异常避免了在显示的错误消息中显示验证函数本身。

当使用 MATLAB 验证函数无法提供所需的特定验证时,您可以创建自己的验证函数,这非常有用。您可以在函数文件中将验证函数创建为局部函数,或将其放在 MATLAB 路径中。为了避免错误消息混杂,请不要在用户定义的验证函数中使用函数参数验证。

例如,mustBeRealUpperTriangular 函数将输入限制为实数值上三角矩阵。验证函数使用 istriuisreal 函数。

function mustBeRealUpperTriangular(a)
    if ~(istriu(a) && isreal(a))
        eidType = 'mustBeRealUpperTriangular:notRealUpperTriangular';
        msgType = 'Input must be a real-valued, upper triangular matrix.';
        throwAsCaller(MException(eidType,msgType))
    end
end

如果参数的类型不正确,函数将引发错误。

a = [1 2 3+2i; 0 2 3; 0 0 1];
mustBeRealUpperTriangular(a)
Input must be a real-valued, upper triangular matrix.

相关主题