主要内容

validateattributes

检查数组的有效性

描述

例子

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

例子

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

例子

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

例子

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

例子

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

例子

全部折叠

类= {“数字”};属性= {“大小”, 4, 6, 2};A =兰特(3,5,2);validateattributes(类,属性)
期望输入的大小是4x6x2,而实际上是3x5x2。

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

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

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

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

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

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

但是,列保持不变,因为每个列元素都等于或大于前一个列元素。下面的代码不会抛出错误。

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

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

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

因为复数在复平面上缺乏定义良好的顺序,validateattributes不承认他们是积极的还是消极的。

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

假设这段代码出现在一个名为排名

类= {“uint8”“int8”};属性= {“>”0,“<”, 10};funcName =“排名”;A = int8(magic(4));validateattributes(类、属性、funcName)
错误,使用“期望排名”输入为所有值都< 10的数组。

创建一个自定义函数,用于检查输入参数inputParser,并使用validateattributes的验证函数addRequired而且addOptional方法。

定义函数。

函数a = findArea(shape,dim1,varargin) p = inputParser;Charchk = {“字符”};Numchk = {“数字”};空的= {“非空的”};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 = * dim1.^2;情况下“矩形”a = dim1 .* p.Results.dim2;结束结束

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

myarea = findArea(“矩形”3,“x”
'dim2'的值无效。预期的输入是这些类型之一: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)

调用没有形状输入参数。

vol = findVolume(10,7,4)
使用findVolume期望输入编号1 Shape为以下类型之一的错误:char相反,它的类型是double。findVolume(第2行)validateattributes(shape,{'char'},{'nonempty'},mfilename,' shape ',1)中的错误

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

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

输入参数

全部折叠

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

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

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

“一半” Half-precision数量
“单一” 单精度数
“双” 双精度数
“int8” 有符号8位整数
“int16” 带符号16位整数
“int32” 32位有符号整数
“int64” 有符号64位整数
“uint8” 无符号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中引入