此示例显示如何通过将条件应用于数组来过滤数组的元素。例如,您可以检查矩阵中的均匀元素,在多维数组中找到所有0的位置,或替换南
数据中的值。您可以使用关系和逻辑运算符的组合执行这些任务。关系运营商(>
那<
那> =
那<=
那==.
那〜=
)在阵列上施加条件,您可以通过将它们与逻辑运算符连接来应用多个条件和
那或者
, 和不是
,分别由符号表示&
那|
, 和〜
。
要应用单个条件,首先创建一个包含在1和15之间的随机整数的5×5矩阵。将随机数生成器重置为默认状态以进行再现性。
RNG.默认a = randi(15,5)
A =5×513 2 3 3 10 14 5 15 7 1 2 9 15 14 13 14 15 8 12 15 10 15 13 15 11
使用关系少于操作员,<
,确定哪些元素一种
小于9.存储结果B.
。
b = <9
B =5x5逻辑阵列0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
结果是逻辑矩阵。每个价值B.
代表逻辑1
(真的
)或逻辑0.
(错误的
)状态以指示相应的元素一种
满足条件一个<9
。例如,A(1,1)
是13.
, 所以b(1,1)
是逻辑0.
(错误的
)。然而,a(1,2)
是2
, 所以B(1,2)
是逻辑1
(真的
)。
虽然B.
包含有关的信息哪一个元素一种
小于9,它并没有告诉你他们的东西价值是。您可以使用,而不是将两个矩阵元素进行比较B.
索引一种
。
a(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)
返回相同的结果a(b)
。不同的是a(b)
使用逻辑索引,而a(i)
使用线性索引。
您可以使用逻辑和
那或者
, 和不是
运营商将任意数量的条件应用于阵列;条件的数量不限于一两个。
首先,使用逻辑和
操作员,表示&
,指定两个条件:要素必须是小于9.和大于2。将条件指定为逻辑索引,以查看满足两个条件的元素。
a(a <9&a> 2)
ans =.5×15 3 8 3 7
结果是元素的列表一种
满足两个条件。请务必使用逻辑运算符连接的单独语句指定每个条件。例如,您无法在上面指定的条件a(2 ,因为它评估了
a(2 。
接下来,找到元素一种
那是小于9.和甚至编号。
a(a <9&〜mod(a,2))
ans =.3×12 2 8.
结果是所有偶数元素的列表一种
这少于9.使用逻辑不运算符,〜,转换矩阵mod(a,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
A =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(a = 10)= nan
A =5×510NAN NaN NaN NaN1010naN10naNaN NaN NaN NaN10 10 10 10 10 naN10 10 10 10 10 10 10 10
最后,更换所有南
价值一种
使用零并应用逻辑而不是运算符,〜A.
。
a(Isnan(a))= 0;c =〜a
C =5x5逻辑阵列0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0
生成的矩阵具有逻辑的值1
(真的
)代替南
值和逻辑0.
(错误的
)代替10s。逻辑不操作,〜A.
,将数字数组转换为逻辑阵列,使其成为逻辑阵列A&C.
返回逻辑矩阵0.
(错误的
)值和A | C.
返回逻辑矩阵1
(真的
)值。