如何过滤列表(删除不需要的元素)?

时间:2012-01-19 21:31:16

标签: arrays matlab

我查看了文档,但似乎无法找到答案。假设我有一个列表

a=(1:1000);

我如何执行一个简单的过滤器,例如所有可被7整除且大于250的数字?

2 个答案:

答案 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的向量,其中两个条件都是真的。