validattributes.

检查数组的有效性

描述

validattreattributes(一种班级属性验证该数组一种属于至少一个指定类(或其子类),并且具有所有指定的属性。如果一种不符合标准,然后达到Matlab®抛出错误并显示格式化的错误消息。除此以外,validattributes.完成而不显示任何输出。

validattreattributes(一种班级属性argindex.包括函数参数列表中的输入的位置,作为任何生成的错误消息的一部分。

validattreattributes(一种班级属性funcname.在生成的错误标识符中包含指定的函数名称。

validattreattributes(一种班级属性funcname.arnamame.在生成的错误消息中包含指定的变量名称。

validattreattributes(一种班级属性funcname.arnamame.argindex.包括生成的错误消息或标识符中的指定信息。

例子

全部收缩

类= {'数字'};属性= {'尺寸',[4,6,2]};a = rand(3,5,2);validattreattributes(a,classes,属性)
当实际尺寸为3x5x2时,预期输入为4x6x2。

因为一种与指定的属性不匹配,MATLAB抛出错误消息。

确定阵列是否越来越多或非分解。

a = [1 5 8 2;9 6 9 4] validattreattributes(a,{'双'},{'nondecreasing'})validattributes(a,{'双'},{'增加'})
A = 1 5 8 2 9 6 9 4

以来一种既有越来越多,validattributes.不会为任何属性检查抛出错误。

设置a(2,3)等于a(1,3)结果在不再严格增加的列中,所以validattributes.抛出错误。

a(2,3)= 8 validattributes(a,{'双'},{'增加'})
A = 1 5 8 2 9 6 8 4预期输入严格增加。

但是,列仍然是nondecreaping,因为每个列元素等于或大于先前列元素。以下代码不会丢失错误。

validattreattributes(a,{'双'},{'nondecreasing'})

假如说一种是函数的第二个输入参数,检查它是非负的。

a =复合物(1,1);validattreattributes(a,{'数字'},{'非负面'},2)
预期的输入编号2是非负面的。

因为复数缺乏在复杂的平面中定义明确的订购,validattributes.不识别它们是积极的或负面的。

检查数组中的值是否为0到10的8位整数。

假设此代码发生在调用的函数中排名

类= {'uint8''int8'};属性= {'>',0,'<',10};funcname ='排名';a = int8(魔术(4));validattreattributes(a,classes,属性,funcname)
使用排名预期输入的错误是具有所有值<10的数组。

创建一个自定义功能,检查输入参数InputParser.和使用validattributes.作为验证功能addrequired.addOptional.方法。

定义函数。

功能a = findarea(形状,dim1,varargin)p = inputparser;charchk = {'char'};numchk = {'数字'};nempty = {'onempty'};addrequired(p,'形状',@(x)validattributes(x,charchk,nempty))addrequired(p,'dim1',@(x)validattributes(x,numchk,nempty))addOptional(p,'dim2',1,@(x)validattributes(x,numchk,nempty))解析(p,shape,dim1,varargin {:})开关形状案件'圈'a = pi * dim1。^ 2;案件'长方形'a = dim1。* p.results.dim2;结束结束

使用非数字第三输入调用函数。

myarea = findarea('长方形',3,'X'
使用FindArea(第10行)错误“DIM2”的值无效。预期输入是以下类型之一:双重,单,UINT8,UINT16,UINT32,UINT64,INT8,INT16,INT32,INT64

检查函数的输入,并在生成的错误中包含有关输入名称和位置的信息。

定义函数。

功能v = findVolume(形状,ht,wd,ln)validateattributes(shape,{'char'},{'onempty'},mfilename,'形状',1)validattreattributes(ht,{'数字'},{'onempty'},mfilename,'高度',2)validattreattributes(wd,{'数字'},{'onempty'},mfilename,'宽度'3)validattributes(ln,{'数字'},{'onempty'},mfilename,'长度'4)

没有召唤功能形状输入参数。

Vol = findVolume(10,7,4)
错误使用查找预期输入数字1,形状为以下类型:char而不是其类型是双倍的。findVolume(第2行)validattreattributes(shape,{'char'},{'nonempty'},mfilename,'shape',1)中的错误

函数名称成为错误标识符的一部分。

mexception.last.identifier.
ans = matlab:findvolume:InvalidType

输入参数

全部收缩

输入,指定为任何类型的数组。

数据类型:||INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|逻辑|char||塑造|细胞|function_handle.
复数支持:万博1manbetx

有效的数据类型,指定为字符向量,字符向量的单元格数组或字符串数​​组。每个元素班级可以是任何内置或自定义类的名称,包括:

'单' 单精度数
'双' 双精度
'int8' 签名8位整数
'int16' 签名16位整数
'int32' 签名32位整数
'int64' 签名64位整数
'uint8' unsigned 8位整数
'uint16' 无符号16位整数
'uint32' 无符号32位整数
'uint64' 无符号64位整数
'逻辑' 逻辑1真正) 要么0.
'char' 字符
'串' 字符串数组
'struct' 结构阵列
'细胞' 细胞阵列
'表'
'function_handle' 功能手柄
'数字' 任何数据类型ISA(a,'numeric')函数返回true,包括INT8.int16INT32.INT64.uint8.uint16UINT32.UINT64, 要么
'班级名称>' 任何其他类名

数据类型:细胞|

有效属性,指定为单元数组或字符串数​​组。

某些属性还需要数值,例如指定大小或元素数量的属性一种。对于这些属性,数值或向量必须立即遵循单元格数组中的属性名称。字符串数组不能用于表示数字值属性

这些属性描述了数组的大小和形状一种

'2d' 二维阵列,包括标量,矢量,矩阵和空阵列
'3d' 阵列具有三个或更少维度
'柱' 柱矢量,N-By-1
'行' 行矢量,1-by-N
'scalar' 标量值,1×1
'scalartext' 字符串标量或字符向量,包括具有零个字符的输入
'向量' 行或列向量,或标量值
'尺寸',[d1,...,dn] 阵列具有尺寸D1-By -...-DN.。跳过检查特定维度,请指定对于那个维度,如[3,4,Nan,2]
'numel',n 数组与N元素
'ncols',n 数组与N
'nrows',n 数组与N
'ndims',n N- 统计数量
'广场' 方矩阵;换句话说,具有相同数量的行和列的二维阵列
'诊断' 对角线矩阵
'onempty' 没有等于零的尺寸
'nonsparse' 不是稀疏的数组

这些属性为值指定有效范围一种

'>',n 所有值大于N
'> =',n 所有值大于或等于N
'<',n 所有值少于N
'<=',n 所有值小于或等于N
'有限' 所有值都是有限的
'非洲' 没有值是nan(不是一个数字)

这些属性在数字或逻辑阵列中检查值的类型,一种

'二进制' 数组和零
'甚至' 偶数整数数组(包括零)
'奇' 奇数整数数组
'整数' 整数值数组
'真实' 真正值的数组
'非负面' 没有元素小于零
'非零' 没有元素等于零
'正' 没有元素小于或等于零
'减少' 列的每个元素小于先前元素,没有元素
'增加' 列的每个元素大于先前元素,没有元素
'nondecreasing' 列的每个元素大于或等于先前元素,没有元素
'无释放' 列的每个元素小于或等于先前元素,没有元素

数据类型:细胞

验证的函数名称,指定为字符向量或作为字符串标量。如果您指定空字符向量,'', 或者<缺失>字符串,然后是validattributes.功能忽略了funcname.输入。

数据类型:char|

输入变量的名称,指定为字符向量或字符串标量。如果您指定空字符向量,'', 或者<缺失>字符串,然后是validattributes.功能忽略了arnamame.输入。

数据类型:char|

输入参数的位置,指定为正整数。

数据类型:

扩展能力

在R2007B中介绍