validateattributes
检查数组的有效性
语法
描述
例子
验证数组大小
类= {“数字”};属性= {“大小”, 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
创建一个自定义函数,用于检查输入参数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,包括int8 ,int16 ,int32 ,int64 ,uint8 ,uint16 ,uint32 ,uint64 ,单 ,或双 |
' < |
任何其他类名 |
数据类型:细胞
|字符串
属性
- - - - - -有效的属性
单元阵列|字符串数组
有效的属性,指定为单元格数组或字符串数组。
的属性还需要数值,例如指定元素的大小或数量的属性一个
.对于这些属性,数值或向量必须紧跟在单元格数组中的属性名称后面。中的数值不能用字符串数组表示属性
.
这些属性描述数组的大小和形状一个
.
“二维” |
二维数组,包括标量、向量、矩阵和空数组 |
“3 d” |
具有三个或更少维度的数组 |
“列” |
列向量,N 1 |
“行” |
行向量,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” |
列的每个元素都小于或等于前一个元素,没有元素小于或等于前一个元素南 . |
数据类型:细胞
funcName
- - - - - -用于验证的函数名称
特征向量|字符串标量
用于验证的函数名,指定为字符向量或字符串标量。如果指定空字符向量,”
,或< >失踪
字符串,则validateattributes
函数忽略funcName
输入。
数据类型:字符
|字符串
varName
- - - - - -输入变量名
特征向量|字符串标量
输入变量的名称,指定为字符向量或字符串标量。如果指定空字符向量,”
,或< >失踪
字符串,则validateattributes
函数忽略varName
输入。
数据类型:字符
|字符串
argIndex
- - - - - -输入参数的位置
正整数
输入参数的位置,指定为正整数。
数据类型:双
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
一些错误消息是MATLAB错误消息的简化版本。
的
类
,funcName
,varName
,argIndex
争论必须是持续的。属性名必须是常量。
在生成的代码中,错误消息中的数字格式可能与MATLAB中的格式不同。例如,这是MATLAB中的一个错误信息:
期望输入是一个包含所有值> 3的数组。
下面是生成代码中的错误信息:
期望输入是一个包含所有值> 3.000000000000000e+00的数组。
标量
而且真正的
半精确数据类型支持属性。万博1manbetx
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。万博1manbetx有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
该功能完全支持GPU阵列。万博1manbetx有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存分区大型数组。
这个函数完全支持分布式数组。万博1manbetx有关更多信息,请参见运行MATLAB函数与分布式数组(并行计算工具箱).
版本历史
在R2007b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。