主要内容

属性验证功能

MATLAB验证功能

MATLAB®定义函数用于属性验证。这些功能支持常见的使用模式进行验金宝app证,并提供描述性的错误消息。下面的表MATLAB验证功能分类和描述其使用。

数值属性

的名字

意义

功能要求输入

mustBePositive(值)

值> 0

gt,伊斯雷尔,isnumeric,islogical

mustBeNonpositive(值)

值< = 0

通用电气,伊斯雷尔,isnumeric,islogical

mustBeNonnegative(值)

值> = 0

通用电气,伊斯雷尔,isnumeric,islogical

mustBeNegative(值)

值< 0

lt,伊斯雷尔,isnumeric,islogical

mustBeFinite(值)

价值没有也没有元素。

isfinite

mustBeNonNan(值)

价值没有元素。

isnan

mustBeNonzero(值)

值~ = 0

情商,isnumeric,islogical

mustBeNonsparse(值)

价值没有稀疏的元素。

issparse

mustBeReal(值)

价值没有虚部。

伊斯雷尔

mustBeInteger(值)

值= =地板(值)

伊斯雷尔,isfinite,地板上,isnumeric,islogical

mustBeNonmissing(值)

价值不能包含缺失值。

ismissing

与其他值

数据类型

的名字

意义

功能要求输入

mustBeA(价值,类名)

价值必须是具体的类。

使用类定义关系

mustBeNumeric(值)

价值必须是数值。

isnumeric

mustBeNumericOrLogical(值)

价值必须是数字或逻辑。

isnumeric,islogical

mustBeFloat(值)

价值必须浮点数组。

isfloat

mustBeUnderlyingType(typename价值)

价值必须有指定的基本类型。

isUnderlyingType

大小

的名字

意义

功能要求输入

mustBeNonempty(值)

价值不是空的。

isempty

mustBeScalarOrEmpty(值) 价值必须是一个标量或是空的。

isscalar,isempty

mustBeVector(值) 价值必须是一个向量。

isvector

会员和范围

的名字

意义

功能要求输入

mustBeMember(价值)

价值是一个精确匹配的一员吗年代

ismember

mustBeInRange(价值低,上部,boundflags) 价值一定范围内。

gt,通用电气,lt,

文本

的名字

意义

功能要求输入

mustBeFile(路径)

路径必须引用一个文件。

isfile

mustBeFolder(文件夹) 路径必须把一个文件夹。

isfolder

mustBeNonzeroLengthText(值)

价值必须与非零长度的一段文字。

不适用

mustBeText(值)

价值必须是一个字符串数组,特征向量,或单元阵列特征向量。

不适用

mustBeTextScalar(值)

价值必须是一个单一的文本。

不适用
mustBeValidVariableName(varname) varname必须是一个有效的变量名。

isvarname

验证属性使用函数

使用属性验证函数在类定义对特定属性值的限制。验证函数接受一个潜在的属性值作为参数,问题一个错误如果值不符合特定的要求实施的功能。

在验证过程中,MATLAB将值传递给每个验证函数中列出的类定义。MATLAB调用每个函数从左至右,遇到的第一个错误。值传递到验证功能是任何转换的结果应用的类和尺寸规格。有关类的更多信息和尺寸验证,看看属性类和尺寸验证

MATLAB验证函数的列表,请参阅MATLAB验证功能

验证函数的语法

验证函数指定为一个以逗号分隔的函数名或函数调用参数,包含在括号。

classdefMyClass属性道具{fcn1, fcn2,}= defaultValue结束结束

MATLAB将潜在属性值传递到隐式验证函数。然而,如果验证函数需要输入参数除了潜在的属性值,那么你必须包括属性和额外的参数。附加参数必须文字值,不能引用变量。文字值nonsymbolic表示,如数字和文本。

例如,考虑函数mustBeGreaterThan。它需要一个极限值作为输入参数。这个验证函数需要一个属性值必须大于这个极限值。

将房地产作为第一个参数传递。使用属性名,但在引号不封闭的名字。这个属性定义限制道具值大于10

属性道具{mustBeGreaterThan(道具,10)}结束

使用验证函数

下面的类为每个属性指定验证函数。

  • 数据必须是一个数字,有限的。

  • 插值函数必须列出的三个选项之一。为这个属性指定一个默认值来满足这个要求。

classdefValidatorFunction属性数据{mustBeNumeric, mustBeFinite}插值函数{mustBeMember(插值函数,{“线性”、“立方”、“花键”})}=“线性”结束结束

创建一个默认的对象的类显示了初始值。

一个= ValidatorFunction
a = ValidatorFunction属性:数据:[]插值函数:“线性”

赋值属性调用验证功能。

一个。Data =“立方”
错误设定属性的数据类“ValidatorFunction”:值必须为数字。

因为数据属性验证不包括数字类,没有转换的字符向量数值。如果你改变的验证数据属性来指定类,MATLAB转换字符向量,数组中。

属性数据{mustBeNumeric, mustBeFinite}结束

的赋值字符矢量不会产生一个错误,因为MATLAB转换字符向量类

一个。Data =“立方”
a = ValidatorFunction属性:数据:[99 117 98 105 99]插值函数:“线性”

赋值的插值函数属性需要一个精确匹配。

一个= ValidatorFunction;一个。插值函数=“铜”
错误设置属性的插值函数类“ValidatorFunction”:值必须是这组线性立方样条的成员

使用枚举类提供了不精确匹配和不区分大小写。

枚举类不精确匹配

属性验证使用枚举类提供了这些优势:

  • 为明确的不准确、不区分大小写匹配字符或字符串向量标量

  • 不精确的匹配转换成正确的值

例如,假设您定义InterpMethod的枚举类插值函数属性的有效性。

classdefInterpMethod枚举线性立方样条结束结束

改变插值函数属性验证使用InterpMethod类。

classdefValidatorFunction属性数据{mustBeNumeric, mustBeFinite}插值函数InterpMethod结束结束

分配一个值匹配的前几个字母“立方”

一个= ValidatorFunction;一个。插值函数=“铜”
a = ValidatorFunction属性:数据:[]插值函数:立方

定义验证函数

验证功能是普通设计的MATLAB函数验证属性的特定目的和函数参数值。函数用于验证属性:

  • 接受潜在的属性值作为输入参数

  • 没有返回值

  • 如果验证失败抛出错误

创建自己的验证函数是非常有用的,当你想提供特定的验证,使用MATLAB验证功能不可用。您可以创建本地函数在类文件或地方在MATLAB函数路径可以使用在任何类。

例如,ImgData类使用一个本地函数定义一个验证器,限制了数据属性只uint8uint16值,不包括子类和不允许从其他数字转换类。预定义的验证函数mustBeInRange限制允许的范围值。

classdefImgData属性数据{mustBeImData(数据),mustBeInRange(0255年数据)}= uint8 (0)结束结束函数mustBeImData (a)%检查特定的类如果~ (isa (,“uint8”)| | isa (,“uint16”))eidType =“ImData: notUint8OrUint16”;msgType =的值分配给数据属性必须uint8或uint16数据。”;throwAsCaller (MException (eidType, msgType))结束结束

当您创建的实例ImgData类,MATLAB验证默认值是一个uint8uint16值,范围255年0…,而不是空的。注意,默认值必须满足验证需求像任何其他值分配给该财产。

一个= ImgData
a = ImgData属性:数据:0

按从左到右的顺序属性赋值调用验证器。分配一个字符向量的数据属性会导致抛出一个错误mustBeImData

一个。Data =“红色”;
错误设定属性的数据类“ImgData”。值分配给数据属性不是uint8或uint16数据。

分配一个数值的范围会导致抛出一个错误mustBeInRange

一个。Data = uint16 (312);
错误设定属性的数据类“ImgData”。值必须大于或等于0,和小于或等于255。

相关功能,请参阅mustBeInteger,mustBeNumeric,mustBePositive

相关的话题