我查看了文档,但似乎无法找到答案。假设我有一个列表
a=(1:1000);
我如何执行一个简单的过滤器,例如所有可被7整除且大于250的数字?
答案 0 :(得分:6)
isDivisable = mod(a,7)==0;
isGreater = a>250;
out = a(isDivisable & isGreater);
答案 1 :(得分:2)
这不是一个清单。这是一个数组。您可以使用布尔索引(向量1和0)来收集您感兴趣的条目。
所以下面返回一个带有'1'-s的布尔向量,其中a
中的数字是7的倍数:
div7 = mod(a, 7) == 0
您可以使用它从向量a
获取所需的元素:
b = a(div7)
返回 new 向量,其中div7
等于1的元素。
当然,您可以组合布尔向量来获得更复杂的“选择器”。所以,就像安德烈所展示的那样
bigger250 = (a>250)
是与a
具有相同长度的向量,但是具有'1'-s,其中a(i)> 250。您可以将它与div7_vec一起使用:
b = a(div7 & bigger250)
&
符号产生一个新的向量,它是两个布尔向量的元素“和”。所以这会让你得到一个'1'-s的向量,其中两个条件都是真的。