找到满足条件的元素数组
这个例子展示了如何过滤数组的元素运用条件到数组中。例如,你甚至可以检查元素矩阵,找到所有0的位置在一个多维数组,或更换南
值数据。您可以执行这些任务使用的组合关系和逻辑运算符。关系运算符(>
,<
,> =
,< =
,= =
,~ =
)条件强加于数组,您可以应用通过连接多个条件的逻辑运算符和
,或
,不
分别用符号&
,|
,~
。
适用于一个单一的条件
申请一个条件,首先创建一个5-by-5矩阵包含随机整数1至15。重置默认状态的随机数字生成器再现性。
rng默认的5)=兰迪(15日
一个=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 =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。
我找= (< 9)
我=8×13 6 7 11 14 16 17 22
结果是一个列向量的线性指标。每个索引描述一个元素的位置一个
小于9,所以在实践中(我)
返回的结果是一样的(B)
。所不同的是,(B)
使用逻辑索引,而(我)
使用线性索引。
应用多个条件
您可以使用逻辑和
,或
,不
运营商任意数量的条件适用于数组;的数量并不局限于一个或两个条件。
首先,使用逻辑和
运营商表示&
指定两个条件:必须的元素小于9和大于2。指定的条件作为一个逻辑索引视图的元素满足这两个条件。
(< 9 & > 2)
ans =5×15 3 8 3 7
结果是一个元素的列表一个
满足这两个条件。一定要指定每个条件与一个单独的语句连接逻辑算子。例如,你不能指定上面的条件(2 < < 9)
,因为它等于一个(2 < | < 9)
。
接下来,找到元素一个
这是小于9和甚至编号。
(< 9 & ~ mod (A, 2))
ans =3×12 2 8
结果是一个列表的元素一个
小于9。使用逻辑不是运营商,~,转换矩阵国防部(2)
成逻辑矩阵,用逻辑的价值1
(真正的
)坐落在一个元素均匀能被2整除。
最后,找到元素一个
这是小于9和甚至编号和不等于2。
(< 9 & ~ mod (, 2) & ~ = 2)
ans = 8
结果8是偶数,小于9,不等于2。它是唯一的元素一个
满足这三个条件。
使用找到
函数的指数等于8,满足条件的元素。
找到(< 9 & ~ mod (A, 2) & ~ = 2)
ans = 14
结果表明,(14)= 8
。
替换的值满足条件
有时是有用的同时改变一些现有的数组元素的值。用一个简单的赋值语句逻辑索引替换数组中的值满足条件。
替换所有值一个
大于10的10号。
(> 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)= NaN
一个=5×510 10 10南南南南南南南南10 10 10 10 10男10 10 10 10 10 10 10
最后,取代所有的南
值一个
与零和应用逻辑不是运营商,~一个
。
(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
(假
)的10年代。逻辑不操作,~一个
,将数值数组转换成一个逻辑数组,这样甲
返回一个矩阵的逻辑0
(假
)值和C |
返回一个矩阵的逻辑1
(真正的
)的值。