在Matlab中查找与多个列匹配多个条件的矩阵行

时间:2017-09-19 19:39:16

标签: matlab find

我有一个3xn矩阵A,列x,y和z。如何找到X1> x> X2和Y1> y> Y2(其中X1,X2,Y1和Y2在x-y网格上定义一个框)的所有行?

我已经尝试过以下无法解决的方法:

Abox = A(A(:,1)<X1 & A(:,1)>X2 & A(:,2)<Y1 & A(:,2)>Y2,:));

indices = find(A(:,1)<X1 & A(:,1)>X2 & A(:,2)<Y1 & A(:,2)>Y2);
Abox = A(indices,:);

都返回空数组。

Axrange = A(A(:,1)<X1 & A(:,1)>X2,:)); 
Abox = Axrange(Axrange(:,2)<Y1 & Axrange(:,2)>Y2,:);

返回第一行的填充数组,然后是第二行的空数组。

1 个答案:

答案 0 :(得分:0)

您的代码是正确的

find(A(:,1)<X1 & A(:,1)>X2 & A(:,2)<Y1 & A(:,2)>Y2)

但是,这会返回匹配行的索引。您需要使用它来获取实际行:

indices = find(A(:,1)<X1 & A(:,1)>X2 & A(:,2)<Y1 & A(:,2)>Y2)
A2 = A(indices,:)