马铃薯®定义用于属性验证的函数。这些函数支持验证的常用模式,并提万博1manbetx供描述性错误消息。下表对MATLAB验证函数进行了分类并描述了它们的使用。
姓名 |
意义 |
函数在输入上调用 |
---|---|---|
|
|
|
|
||
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
姓名 |
意义 |
函数在输入上调用 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
姓名 |
意义 |
函数在输入上调用 |
---|---|---|
|
|
使用类定义关系 |
|
|
|
|
||
|
|
|
|
|
姓名 |
意义 |
函数在输入上调用 |
---|---|---|
|
|
|
|
价值 必须是标量或是空的。 |
|
|
价值 必须是矢量。 |
姓名 |
意义 |
函数在输入上调用 |
---|---|---|
|
|
|
|
价值 必须在范围内。 |
姓名 |
意义 |
函数在输入上调用 |
---|---|---|
|
|
|
|
小路 必须引用文件夹。 |
|
|
不适用 |
|
|
|
不适用 |
|
不适用 | |
|
arnamame. 必须是一个有效的变量名。 |
使用类定义中的属性验证函数在属性值中强制限制。验证函数接受潜在属性值作为参数,如果该值不符合该函数所强加的特定要求,则会出现错误。
在验证过程中,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通过实现依赖函数作为类的方法,支持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行)值的错误必须大于比较值。