根据条件元素挑选行

时间:2013-03-15 19:35:00

标签: matlab

我有一个Nx3矩阵,我想挑出第一列和第二列满足某个条件的所有行。这是一个显示我想要的(非工作)示例:

a = [1 3 0; 2 3 1; 4 9 2];
a = a(a(:, 1)>3 && a(:, 2)>3)

在不必诉诸计算密集型for循环的情况下,是否有必要实现这一目标?

3 个答案:

答案 0 :(得分:1)

这应该适合你:

a = [1 3 0; 2 3 1; 4 9 2];
a = a(a(:, 1)>3 & a(:, 2)>3,:) %you should put element-wise and (&) and put the colon (:) operator which indicates 'all columns'

ans =

 4     9     2

答案 1 :(得分:1)

另一种方法:

ind1=find(a(:,1)>3);
ind2=find(a(:,2)>3);
a=a(intersect(ind1,ind2),:);

答案 2 :(得分:0)

for循环实际上不是计算密集型的,它实际上是输入大小的线性。通过N循环是可行的方法。