在Matlab中找到匹配多列上的多个条件的矩阵行
问题描述:
我有一个3xn矩阵A,列x,y和z。如何找到X1> x> X2 AND Y1> y> Y2(其中X1,X2,Y1和Y2在x-y网格上定义一个框)的所有行?在Matlab中找到匹配多列上的多个条件的矩阵行
我已经尝试过,没有工作下列方法:
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,:);
为第一行返回一个填充数组,然后为第二行返回一个空数组。
答
你的代码是正确的
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,:)
您需要的代码与您所写的文本非常相似。你有什么尝试? –
上面的问题[在Matlab中查找匹配两个条件的矢量元素](https://stackoverflow.com/questions/8378807/find-vector-elements-matching-two-conditions-in-matlab)不包括多个条件多个相同矩阵的列,只有一个列上的多个条件。我认为我遇到的问题是由于多栏。 – Dandan
我添加了一些笔记,关于我已经尝试过的原始问题。 – Dandan