主要内容

属性验证功能

马铃薯验证功能

马铃薯®定义用于属性验证的函数。这些函数支持验证的常用模式,并提万博1manbetx供描述性错误消息。下表对MATLAB验证函数进行了分类并描述了它们的使用。

数值属性

姓名

意义

函数在输入上调用

必须(价值)

值> 0

GT.是真实的isnumeric.islogical.

mustBeNonpositive(价值)

值<= 0

GE是真实的isnumeric.islogical.

Mustbenonnegative.(价值)

值> = 0

GE是真实的isnumeric.islogical.

MustbeNegative.(价值)

值<0.

LT.是真实的isnumeric.islogical.

必须是(价值)

价值没有和不元素。

是一菲特

Mustbenonnan.(价值)

价值没有元素。

isnan.

Mustbenonzero.(价值)

value〜= 0

eq.isnumeric.islogical.

Musbenonsparse.(价值)

价值没有稀疏的元素。

颁奖物

厄伯(价值)

价值没有虚构的部分。

是真实的

Mustbeinteger.(价值)

value == bloor(价值)

是真实的是一菲特地面isnumeric.islogical.

Mustbenonmissing.(价值)

价值不能包含缺失的值。

不见了

与其他值进行比较

姓名

意义

函数在输入上调用

mustBeGreaterThan(价值,c)

c值>

GT.Isscalar.是真实的isnumeric.islogical.

少尉(价值,c)

价值

LT.是真实的isnumeric.islogical.

Mustbegreatthanorequal.(价值,c)

值> = c

GE是真实的isnumeric.islogical.

用过的努力(价值,c)

值<= c

是真实的isnumeric.islogical.

数据类型

姓名

意义

函数在输入上调用

甘蔗(价值,ClassNames)

价值必须是特定课程。

使用类定义关系

Mustbenumeric.(价值)

价值必须是数字。

isnumeric.

mustBeNumericOrLogical(价值)

价值必须是数字或逻辑的。

isnumeric.islogical.

MustBefloat.(价值)

价值必须是浮点数。

isfloat.

MustbeunderingType.(值,typeName)

价值必须具有指定的底层类型。

isUnderlyingType

尺寸

姓名

意义

函数在输入上调用

Mustbenonempty.(价值)

价值不是空的。

是空的

Mustbescalarreusemy.(价值) 价值必须是标量或是空的。

Isscalar.是空的

Mustbevector.(价值) 价值必须是矢量。

isvector.

会员和范围

姓名

意义

函数在输入上调用

MustBemember.(价值,s)

价值是一个成员的完全匹配S.

ismember.

Mustbeinrange.(价值,较低,鞋面,绑定文件) 价值必须在范围内。

GT.GELT.

文本

姓名

意义

函数在输入上调用

必过卜(路径)

小路必须引用文件。

iSfile.

必备的人(文件夹) 小路必须引用文件夹。

isfolder.

MustbenonzerolengtyText.(价值)

价值必须是非零长度的一块文本。

不适用

Mustbetext.(价值)

价值必须是字符串阵列,字符向量或字符向量的单元格数组。

不适用

MustbetextScalar.(价值)

价值必须是一块文字。

不适用
mustbevalidvariablename.(arname) arnamame.必须是一个有效的变量名。

isvarname.

使用函数验证属性

使用类定义中的属性验证函数在属性值中强制限制。验证函数接受潜在属性值作为参数,如果该值不符合该函数所强加的特定要求,则会出现错误。

在验证过程中,MATLAB将值传递给类定义中列出的每个验证函数。MATLAB从左到右调用每个函数,并抛出遇到的第一个错误。传递给验证函数的值是类和大小规范应用的任何转换的结果。有关类和大小验证的更多信息,请参阅属性类和大小验证

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

验证功能语法

将验证函数指定为逗号分隔的函数名称或函数调用的函数调用,包含在括号中的参数。

Classdef.我的课特性道具{FCN1,FCN2,......} = defaultValue.结尾结尾

MATLAB隐含地将潜在属性值传递给验证函数。但是,如果验证函数除了潜在属性值之外还需要输入参数,则必须包含属性和其他参数。其他参数必须是文字值,也不能引用变量。字面值是非蛋白的表示,例如数字和文本。

例如,考虑该功能mustBeGreaterThan。它需要将限制值作为输入参数。此验证功能要求属性值必须大于此限制值。

将属性作为第一个参数。使用属性名称,但不要将名称括在引号中。此属性定义限制道具价值大于10.

属性道具{Mustbegreathan(Prop,10)}结尾

使用验证功能

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

  • 数据必须是数字和有限的。

  • interp.必须是列出的三种选项之一。为此属性指定默认值以满足此要求。

Classdef.验证器功能特性数据{MustBenumeric,MustBefinite}interp.{mustbemmber(interp,{'linear','cubic','spline'})}='线性'结尾结尾

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

a = ValidatorFunction.
a =具有属性的validatorfunction:data:[] interp:'linear'

将值分配给属性调用验证函数。

a.data =“立方”
错误设置类“ValidatorFunction”的属性“数据”:值必须为数字。

因为这数据属性验证不包含一个数字类,没有转换字符矢量到数值。如果更改验证数据属性指定类双倍的,Matlab转换了字符向量,双倍的大批。

属性数据双倍的{MustBenumeric,MustBefinite}结尾

分配给字符矢量不会产生错误,因为Matlab转换了字符向量上课双倍的

a.data =“立方”
a =具有属性的ValidatorFunction:数据:[99 117 98 105 99] Interp:'linear'

分配给interp.属性需要完全匹配。

a =验证器功能;A.Interp =.'CU'
错误设置类“ValidatorFunction”的属性“Interp”:值必须是此集合线性立方样条的成员

使用枚举类提供不精确的匹配和案例不敏感性。

不精确匹配的枚举类

使用枚举类进行属性验证提供了以下优点:

  • 不确定,不敏感的匹配匹配,用于明确的炭载体或字符串标量

  • 将不精确的匹配转换为纠正价值

例如,假设您定义了interpmethod.枚举类interp.属性的有效性。

Classdef.interpmethod.枚举线性立方样条曲线结尾结尾

改变interp.属性验证使用interpmethod.班级。

Classdef.验证器功能特性数据{MustBenumeric,MustBefinite}interp.interpmethod.结尾结尾

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

a =验证器功能;A.Interp =.'CU'
a =具有属性的验证器功能:数据:[] Interp:Cubic

定义验证函数

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

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

  • 不要返回值

  • 如果验证失败,则抛出错误

创建自己的验证函数在使用MATLAB验证函数不可用的特定验证时非常有用。您可以在类文件中创建本地函数,或将Matlab路径上的函数放在任何类中可供使用。

例如,imgdata.类使用本地功能来定义限制的验证器数据仅限财产uint8.或者uint16值,排除子类,不允许从其他数字类转换。预定义的验证功能Mustbeinrange.限制允许值的范围。

Classdef.imgdata.特性数据{Mustbeimdata(数据),MustbeinRange(数据,0,255)}= UINT8(0)结尾结尾功能Mustbeimdata(a)%检查特定的类如果〜(strcmp(cname,'uint8')||Strcmp(CNAME,'uint16'))Eidtype ='imdata:notuint8oruint16';msgtype ='分配给Data属性的值不是UINT8或UINT16数据。;ThrowAscaller(MEXception(Eidtype,MsgType))结尾结尾

当您创建一个实例时imgdata.类,Matlab验证默认值是auint8.或者uint16价值,在范围内0 ... 255.,而不是空的。请注意,默认值必须满足验证要求,如分配给属性的任何其他值。

a = imgdata.
A =具有属性的IMGDATA:数据:0

属性分配在左右订单中调用验证器。分配A.字符向量到数据属性导致抛出错误Mustbeimdata.

a.data ='红色的';
错误设置类“imgdata”的属性“数据”。分配给Data属性的值不是UINT8或UINT16数据。

分配超出范围的数值导致抛出的错误Mustbeinrange.

a.data = uint16(312);
错误设置类“imgdata”的属性“数据”。值必须大于或等于0,小于或等于255。

对于相关功能,请参阅Mustbeinteger.Mustbenumeric., 和必须

添加支持万博1manbetx验证函数

万博1manbetx通过实现依赖函数作为类的方法,支持MATLAB对类对象的验证函数。要确定为每个函数实现哪些方法,请参阅该表中列出的验证函数参考页面MATLAB验证功能

例如,假设您希望您的类支持万博1manbetxmustBeGreaterThan验证功能。将这些MATLAB过载作为类中的方法:

  • 是真实的- 始终返回逻辑真的因为mustBeGreaterThan不支持复数。万博1manbetx

  • GT.- 根据需要,比较中的第二个对象必须是标量mustBeGreaterThan

万博1manbetx支持MBGT.课程实现支持万博1manbetxmustBeGreaterThan

Classdef.万博1manbetx支持MBGT.特性道具(1,1)双{urbereal}结尾方法功能obj = 万博1manbetxsupportmbgt(数据)如果nargin> 0 obj.prop =数据;结尾结尾功能tf = isreal(obj)tf = true;结尾功能tf = gt(obj1,obj2)tf = [obj1(:)。prop]> obj2.prop;结尾结尾结尾

使用mustBeGreaterThan使用此类的对象:

一个= 万博1manbetxSupportmBGT (10);b = 万博1manbetxSupportmBGT (12);mustBeGreaterThan (a, b)
使用Mustbegreathan(第19行)值的错误必须大于比较值。

相关话题