我想基于元素条件提取子向量

时间:2014-04-13 12:30:35

标签: matlab

我有一个matlab矢量

a = [1,2,3,4,5,6,7,8,9,10]

并且想要基于布尔函数提取所有值,例如所有偶数。像这样:

result = selector(a, is_even);
% result is now [2,4,6,8,10]

有一种简单的方法吗?

此外,假设我有一个矩阵

A = [1,2,3 
     4,5,6,
     7,8,9]

是否还有一种方法可以选择以第一列中的值开头的行,即偶数?

result = selector(A, is_even);
% result is now a matrix with one row [4,5,6]

2 个答案:

答案 0 :(得分:4)

使用logical indexing

第一个问题:

result = a(mod(a,2)==0);

第二个问题:

result = A(mod(A(:,1),2)==0,:);

答案 1 :(得分:3)

Logical indexing是你的朋友。

只需使用:

a(mod(a,2)==0)

同样,a(mod(a,2)==1)将为您提供所有奇数值。


一旦你知道这一点,你就可以用类似的方式轻松解决你的第二个问题。 :P