找到满足条件的数组元素
这个例子展示了如何通过对数组应用条件来筛选数组的元素。例如,您可以检查矩阵中的偶数元素,找到多维数组中所有0的位置,或者替换南
数据中的值。您可以使用关系运算符和逻辑运算符的组合来执行这些任务。关系操作符(>
,<
,> =
,< =
,= =
,~ =
)对数组施加条件,您可以通过将它们与逻辑操作符连接来应用多个条件而且
,或
,不
,分别用符号表示&
,|
,~
.
应用单一条件
要应用单个条件,首先创建一个5乘5矩阵,其中包含1到15之间的随机整数。为了重现性,将随机数生成器重置为默认状态。
rng默认的A = randi(15,5)
一个=5×513 2 3 3 10 14 5 15 7 12 9 15 14 13 14 15 8 12 15 10 15 13 15 11
使用关系不到运营商,<
,以确定其中的元素一个
小于9。将结果存储在B
.
B = a < 9
B =5x5逻辑阵列0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
结果是一个逻辑矩阵。中的每个值B
表示逻辑1
(真正的
)或合乎逻辑的0
(假
的对应元素是否为一个
满足条件A < 9
.例如,(1)
是13
,所以B (1,1)
是合乎逻辑的0
(假
).然而,(1、2)
是2
,所以B(1、2)
是合乎逻辑的1
(真正的
).
虽然B
包含关于哪一个元素一个
小于9,它没有告诉你它们是多少值是这样的。与逐个元素比较两个矩阵不同,您可以使用B
索引到一个
.
(B)
ans =8×12 2 5 3 8 3 7 1
结果是中元素的列向量一个
小于9的。自B
是逻辑矩阵,这个操作叫什么逻辑索引.在本例中,用作索引的逻辑数组与另一个数组的大小相同,但这不是必需的。有关更多信息,请参见数组索引.
的信息位置数组元素满足条件而不是它们的实际值。在本例中,可以使用找到
函数定位中的所有元素一个
小于9。
I = find(A < 9)
我=8×13 6 7 11 14 16 17 22
结果是线性下标的列向量。每个索引描述元素的位置一个
它小于9,所以在实践中(我)
返回相同的结果(B)
.区别在于(B)
使用逻辑索引,而(我)
使用线性索引。
应用多个条件
你可以使用逻辑而且
,或
,不
运算符,用于对数组应用任意数量的条件;条件的数量不限于一两个。
首先,使用逻辑而且
运营商表示&
,以指定两个条件:元素必须为小于9而且大于2.将条件指定为逻辑索引,以查看同时满足这两个条件的元素。
A(A<9 & A>2)
ans =5×15 3 8 3 7
中的元素的列表一个
满足两个条件。请确保使用由逻辑运算符连接的单独语句指定每个条件。例如,不能通过指定上述条件(2 < < 9)
,因为它的值为A(2.
接下来,找到其中的元素一个
这是小于9而且甚至编号.
A(A<9 & ~mod(A,2))
ans =3×12 2 8
结果是中所有偶数元素的列表一个
小于9的。逻辑NOT运算符~的使用转换了矩阵国防部(2)
化为一个逻辑矩阵,具有逻辑的值1
(真正的
)位于元素能被2整除的位置。
最后,找到其中的元素一个
这是小于9而且甚至编号而且不等于2.
A(A<9 & ~mod(A,2) & A~=2)
Ans = 8
结果8是偶数,小于9,不等于2。它是唯一的元素一个
这三个条件都满足。
使用找到
函数获取满足条件的等于8的元素的下标。
find(A<9 & ~mod(A,2) & A~=2)
Ans = 14
结果表明:A(14) = 8
.
替换满足条件的值
有时,同时更改几个现有数组元素的值是有用的。使用带有简单赋值语句的逻辑索引替换数组中满足条件的值。
替换所有的值一个
大于10的数是10。
A(A>10) = 10
一个=5×510 2 3 3 10 10 5 10 7 1 2 9 10 10 10 10 10 8 10 10 10 10 10 10 10 10 10
接下来,将所有值替换为一个
不等于10加上a南
价值。
A(A~=10) = NaN
一个=5×510南南南10 10南南10 10南南10 10 10南南10 10 10 10 10 10 10
最后,替换所有的南
值一个
并应用逻辑NOT运算符,~一个
.
A(isnan(A)) = 0;C = ~ a
C =5x5逻辑阵列0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
结果矩阵具有逻辑值1
(真正的
),以取代南
值和逻辑0
(假
)来代替10。逻辑上的NOT运算,~一个
,将数值数组转换为逻辑数组,使甲
返回一个逻辑矩阵0
(假
)值及C |
返回一个逻辑矩阵1
(真正的
)的值。