16.1查找元素和检查条件

函数any全部的对于确定矩阵的任何元素或所有元素是否满足某些条件是有用的。这个查找函数在确定矩阵的哪些元素满足特定条件时也很有用。

 
: tf = any (x)
: tf = any (x, dim)

对于向量参数,如果向量的任何元素为非零,则返回true(逻辑1)。

对于矩阵自变量,返回一个逻辑1和0的行向量,每个元素指示矩阵相应列的任何元素是否为非零。例如

任意(eye(2,4))⇒ [ 1, 1, 0, 0 ]

如果可选参数dim已提供,按尺寸工作dim例如

任意(eye(2,4),2)⇒ [ 1; 1 ]

详见: 全部的.

 
: tf = all (x)
: tf = all (x, dim)

对于向量参数,如果向量的所有元素都非零,则返回true(逻辑1)。

对于矩阵自变量,返回逻辑1和0的行向量,每个元素指示矩阵相应列的所有元素是否为非零。例如

all([2,3;1,0])⇒ [ 1, 0 ]

如果可选参数dim已提供,按尺寸工作dim.

详见: 任何.

从于比较运算符(详见比较运算符)返回一和零的矩阵,很容易测试矩阵的许多方面,而不仅仅是元素是否为非零。例如

全部(全部(兰特(5)<0.9))⇒ 0

测试一个随机的5乘5矩阵,看看它的所有元素是否都小于0.9。

请注意,在条件上下文中(如的test子句如果while语句)Octave将测试视为您已输入all(all(条件)).

 
: z = xor (x, y)
: z = xor (x1, x2, …)

返回独占或属于xy.

对于布尔表达式xy,xor(x, y)是真的当且仅当xy是真的。否则,如果xy都是真的或都是假的,xor返回false。

xor操作的真值表为

x y z
- - -
0 0 0
1 0 1
0 1 1
1 1 0

如果给定两个以上的参数,则从左到右累积应用xor运算:

(…((x1 XOR x2)XOR x3)XOR…)

详见: , , .

 
: y = diff (x)
: y = diff (x, k)
: y = diff (x, k, dim)

如果x是长度的向量n, diff(x)是第一差的向量x2.x1.xnx(n-1)。

如果x是矩阵,diff(x)是沿第一个非单例维度的列差异矩阵。

第二个参数是可选的。如果被提供,diff(x, k)这里的k是一个非负整数,返回k-th差异。有可能k大于矩阵的第一个非单例维数。在这种情况下,diff继续沿着nextnon singleton维度来处理差异。

可以用可选变量来解释返回差异的维度dim。在这种情况下k-沿该维度计算阶差。在以下情况下k超过大小x, dim)则返回一个空矩阵。

详见: 分类, 合并.

 
: tf = isinf (x)

返回一个逻辑数组,该数组为true,其中的元素为x在它们不存在的地方是无限的和虚假的。

例如

isinf([13,Inf,NA,NaN])⇒ [ 0, 1, 0, 0 ]

详见: isfinite, 不是吗, 不是吗.

 
: tf = isnan (x)

返回一个逻辑数组,该数组为true,其中的元素为xareNaN值,不包含值的地方为false。

NA值也被认为是NaN值。例如

isnan([13,Inf,NA,NaN])⇒ [ 0, 0, 1, 1 ]

详见: 不是吗, isinf, isfinite.

 
: tf = isfinite (x)

返回一个逻辑数组,该数组为true,其中的元素为x是有限的值,不存在的地方为false。

例如

isfinite([13,Inf,NA,NaN])⇒ [ 1, 0, 0, 0 ]

详见: isinf, 不是吗, 不是吗.

 
: [err, yi, …] = common_size (xi, …)

确定所有输入参数是标量还是通用大小。

如果为真,犯错误为零,并且是通用大小的矩阵,所有条目都等于xi如果这是标量或xi否则如果输入不能达到共同的大小,犯错误is1,以及xi例如

[err,a,b]=common_size([1 2;3 4],5)⇒ err=0⇒ a=[1,2;3,4]⇒ b=[5,5;5,5]

这对于实现参数可以是标量或通用大小的函数非常有用。

详见: 大小, 大小_相等, 呆火驼, 数组的维数.

 
: idx = find (x)
: idx = find (x, n)
: idx = find (x, n, direction)
: [i, j] = find (…)
: [i, j, v] = find (…)

返回矩阵的非零元素的索引向量,作为行,如果x是行向量,否则为列。

为了获得每个矩阵元素的单个索引,Octave假设矩阵的列形成一个长向量(就像存储Fortran数组一样)。例如

查找(eye(2))⇒ [ 1; 4 ]

如果给出两个输入,n指示从矩阵或向量的开头开始查找的最大元素数。

如果给出三个输入,方向应该是其中之一第一最后的,仅指定第一个或最后一个n指数。但是,索引总是按顺序返回。

如果指定两个输出,查找返回矩阵中非零元素的行和列索引。例如:

[i,j]=find(2*eye(2))⇒ i=[1;2]⇒ j=[1;2]

如果指定三个输出,查找还返回一个包含非零值的向量。例如

[i,j,v]=find(3*eye(2))⇒ i=[1;2]⇒ j=[1;2]⇒ v=[3;3]

如果x是大小为m x n x p x…的多维数组…,j包含列位置,就好像x被展平为大小为mx(n+p+…)的二维矩阵。

注意,这个函数对稀疏矩阵特别有用,因为它提取非零元素作为向量,然后可以用来创建原始矩阵。例如:

sz=大小(a);[i,j,v]=find(a);b=稀疏(i,j,v,sz(1),sz(2));

详见: 非零.

 
: idx = lookup (table, y)
: idx = lookup (table, y, opt)

中的查找值排序的桌子

此函数通常用作插值的前奏。

如果表在增加,长度为N,并且idx=查找(表,y)然后表(idx(i))<=y(i)<表(idx(i+1))为所有人y(i)在表格内。如果y(i)<表(1)然后idx(i)为0。如果y(i)>=表(结束)是不是(y(i))然后idx(i)是N。

如果表格在减少,则测试将颠倒。对于非严格单调表,总是跳过空间隔。结果是undefinedif桌子不是单调的,或者如果桌子包含NaN。

查找的复杂性为O(M*log(N)),其中M是的大小y。在特殊情况下y也进行了排序,复杂度为O(min(M*log(N),M+N))。

桌子y也可以是字符串的元胞数组(或y可以是单个字符串)。在这种情况下,使用字典比较来执行字符串查找。

如果opts如果指定了,则它必须是一个带有字母的字符串,表示其他参数。

m

火柴表(idx(i))==y(i)如果y(i)出现在表中;否则idx(i)为零。

b

布尔值。idx(i)是逻辑1或0,指示是否y(i)是否包含在表中。

l

左边对于数值查找,最左边的子区间应扩展到无穷大(即,所有索引至少为1)。

r

正确的对于数值查找,最右边的子区间应扩展为一致性(即,所有索引最多为N-1)。

笔记如果桌子未对结果进行排序查找将是不可预测的。

如果您希望检查变量是否存在,而不是其元素可能具有的属性,详见变量的状态.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号