主要内容

validateattributes

数组有效性检查

描述

例子

validateattributes (一个属性验证数组一个至少属于一个指定的类(或它的子类),并具有所有指定的属性。如果一个不符合标准,那么MATLAB呢®抛出错误并显示格式化的错误消息。否则,validateattributes完成时不显示任何输出。

例子

validateattributes (一个属性argIndex在生成的错误消息中包括函数参数列表中的输入位置。

例子

validateattributes (一个属性funcName在生成的错误标识符中包含指定的函数名。

例子

validateattributes (一个属性funcNamevarName在生成的错误消息中包含指定的变量名。

例子

validateattributes (一个属性funcNamevarNameargIndex在生成的错误消息或标识符中包含指定的信息。

例子

全部折叠

类= {“数字”};属性= {“大小”, 4, 6, 2};一个=兰德(3、5、2);validateattributes(类,属性)
预期输入的尺寸为4x6x2,而实际尺寸为3x5x2。

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

确定数组是递增还是非递减。

A = [1 5 8 2;9 6 9 4] validateattributes(A, {)“双”},{“不减少的”}) validateattributes (A, {“双”},{“增加”})
A = 1 5 8 2 9 6 9 4

一个既增加又非减少,validateattributes不抛出任何属性检查错误。

设置(2、3)等于(1、3)结果在不再严格递增的列中,所以validateattributes抛出一个错误。

A(2,3) = 8“双”},{“增加”})
A = 1 5 8 2 9 6 8 4期望投入严格增加。

但是,由于每个列元素都等于或大于前一个列元素,因此列保持非递减状态。下面的代码不会抛出错误。

validateattributes (A, {“双”},{“不减少的”})

假设一个是函数的第二个输入参数,请检查它是否为非负。

一个=复杂的(1,1);validateattributes (a, {“数字”},{非负的}, 2)
期望输入2是非负的。

因为复数在复平面上没有明确的顺序,validateattributes不承认它们是积极的还是消极的。

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

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

类= {“uint8”“int8”};属性= {“>”0,“<”, 10};funcName =“排名”;一个= int8(魔法(4));validateattributes(类、属性、funcName)
使用所有值< 10的数组进行排名时出错。

创建一个自定义函数来检查输入参数inputParser,并使用validateattributes的验证函数addRequiredaddOptional方法。

定义的函数。

函数a = findArea(shape,dim1,varargin) p = inputParser;charchk = {“字符”};numchk = {“数字”};nempty = {“非空的”};addRequired (p,“形状”@ (x) validateattributes (x, charchk nempty)) addRequired (p,“dim1”@ (x) validateattributes (x, numchk nempty)) addOptional (p,“dim2”1, @ (x) validateattributes (x, numchk nempty))解析(p,形状、dim1变长度输入宗量{:})开关形状情况下“圆”A = PI * dim1.^2;情况下“矩形”a = dim1 .* p.Results.dim2;结束结束

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

myarea = findArea (“矩形”3,“x”
使用findArea出错(第10行)期望输入的类型为:double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64

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

定义的函数。

函数v = findVolume(shape,ht,wd,ln) validateattributes(shape,{)“字符”},{“非空的”mfilename},“形状”1) validateattributes (ht, {“数字”},{“非空的”mfilename},“高度”2) validateattributes (wd, {“数字”},{“非空的”mfilename},“宽度”3) validateattributes (ln, {“数字”},{“非空的”mfilename},“长度”,4)

调用函数时不使用形状输入参数。

卷= findVolume(10、7、4)
使用findVolume时的错误。期望输入1,Shape,是以下类型之一:char,它的类型是double。validateattributes(shape,{'char'},{'nonempty'},mfilename,' shape ',1)

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

MException.last.identifier
ans = MATLAB: findVolume: invalidType

输入参数

全部折叠

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串|结构体|细胞|function_handle
复数的支持:金宝app是的

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

“一半” Half-precision数量
“单一” 单精度数
“双” 双精度数
“int8” 签署了8位整数
“int16” 签署了16位整数
“int32” 签署了32位整数
“int64” 签署了64位整数
“uint8” Unsigned 8位整数
“uint16” 16位无符号整数
“uint32” 32位无符号整数
“uint64” 未签名的64位整数
“逻辑” 逻辑1真正的)或0
“字符” 字符
“字符串” 字符串数组
“结构” 结构数组
“细胞” 单元阵列
“表” 表格
“function_handle” 函数处理
“数字” 的任何数据类型isa (A,“数字”)函数返回true,包括int8int16int32int64uint8uint16uint32uint64,或
' <class_name>” 任何其他类名

数据类型:细胞|字符串

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

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

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

“二维” 二维数组,包括标量、向量、矩阵和空数组
“3 d” 三维或更小的数组
“列” 列向量,N1
“行” 行向量,1 -N
“标量” 标量值,1×1
“scalartext” 字符串标量或字符向量,包括零字符输入
“向量” 行或列向量,或标量值
“大小”,(d1,…,dN) 数组的维d1——-…——-dN.若要跳过检查特定维度,请指定对于那个维度,比如(3、4、南,2)
元素个数,N 数组N元素
ncols, N 数组N
nrows, N 数组N
ndims, N N维数组
“广场” 方阵;换句话说,就是一个行数和列数相等的二维数组
“诊断接头” 对角矩阵
“非空的” 没有等于零的维度
“nonsparse” 非稀疏数组

中的值的有效范围由这些属性指定一个

“>”,N 所有值大于N
“> =”,N 所有大于或等于的值N
“<”,N 所有值均小于N
“< =”,N 小于或等于的所有值N
“有限” 所有的值都是有限的
“nonnan” 没有值是NaN(不是数字)

这些属性检查数值或逻辑数组中的值的类型,一个

“二元” 1和0的数组
“甚至” 偶数数组(包括零)
“奇怪” 奇整数数组
“整数” 整数值数组
“真实”的 实值数组
非负的 没有元素小于零
“零” 没有一个元素等于零
“积极” 没有一个元素小于等于零
“减少” 列中的每个元素都小于前一个元素,且没有元素小于
“增加” 列中的每个元素都大于前一个元素,且没有元素大于
“不减少的” 列中的每个元素都大于或等于前一个元素,且没有一个元素是
“nonincreasing” 列中的每个元素都小于或等于前一个元素,并且没有元素是

数据类型:细胞

用于验证的函数名,指定为字符向量或字符串标量。如果你指定一个空字符向量,'',或者是< >失踪字符串,那么validateattributes函数忽略了funcName输入。

数据类型:字符|字符串

输入变量的名称,指定为字符向量或字符串标量。如果你指定一个空字符向量,'',或者是< >失踪字符串,那么validateattributes函数忽略了varName输入。

数据类型:字符|字符串

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

数据类型:

扩展功能

介绍了R2007b