这个例子展示了如何通过对数组应用条件来过滤数组的元素。例如,您可以检查矩阵中的偶数元素,找到多维数组中所有0的位置,或者进行替换南
数据中的值。您可以使用关系和逻辑运算符的组合执行这些任务。关系运营商(>
,<
,> =
,<=
,==.
,〜=
)在阵列上施加条件,您可以通过将它们与逻辑运算符连接来应用多个条件和
,或者
, 和不
,分别用符号表示&
,|
, 和~
.
要应用单个条件,首先创建一个包含1到15之间的随机整数的5乘5矩阵。将随机数生成器重置为可再现性的默认状态。
RNG.默认的5) =兰迪(15日
一个=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 = <9
B =5 x5逻辑阵列0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
结果是一个逻辑矩阵。每个值在B
表示一个逻辑1
(真的
)或逻辑0
(假
的对应元素是否一个
满足条件一个<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。
我=找到(a <9)
我=8×13 6 7 11 14 16 17 22
结果是一个线性指标的列向量。每个索引描述了元素的位置一个
它小于9,所以在实践中a(i)
返回与(B)
.区别在于(B)
使用逻辑索引,而a(i)
使用线性索引。
您可以使用逻辑和
,或者
, 和不
操作符用于对数组应用任意数量的条件;条件的数量不限于一两个。
首先,使用逻辑和
运营商表示&
,以指定两个条件:元素必须为小于9和大于2.将条件指定为逻辑索引,以查看满足两个条件的元素。
a(a <9&a> 2)
ans =5×15 3 8 3 7
结果是一个元素列表一个
满足两个条件。请务必使用逻辑运算符连接的单独语句指定每个条件。例如,您无法在上面指定的条件(2 < < 9)
,因为它的值为a(2 .
接下来,找到元素一个
那是小于9和甚至编号.
(< 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的元素的索引。
查找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 11 2 9 10 10 10 10 10 8 10 10 10 10 10 10 10 10
接下来,替换所有值一个
不等于10加a南
价值。
(~ = 10) = NaN
一个=5×5南10南10南10南10南10南10南10南10南10南10南10南10南10南10南10南10南10南10
最后,更换所有南
值一个
,并应用逻辑NOT运算符,〜A.
.
(isnan (A)) = 0;C = ~
C =5 x5逻辑阵列0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
生成的矩阵具有逻辑的值1
(真的
)代替南
值和逻辑0
(假
)代替10s。逻辑不操作,〜A.
,将数字数组转换为逻辑数组,以便甲
返回逻辑矩阵0
(假
)值和A | C.
返回逻辑矩阵1
(真的
)的值。