Arrays 基于多列的数组过滤器

Arrays 基于多列的数组过滤器,arrays,matlab,matrix,Arrays,Matlab,Matrix,假设我有一个4xn数组: A = [1 2 3 4; ... 2 4 8 9; ... 6 7 9 4; ... 1 8 3 4]; 我想根据前两列的内容过滤整个数组 例如,如果我想返回前两列中包含2的数组行,那么我要寻找的答案是isL R = [1 2 3 4;... 2 4 8 9]; 或者,如果我想返回前两列中包含1的行,我要寻找的答案是 A = [1 2 3 4;... 1 8 3 4]; 我相信这是显而易见

假设我有一个
4xn
数组:

A =    [1 2 3 4; ...
        2 4 8 9; ...
        6 7 9 4; ...
        1 8 3 4];
我想根据前两列的内容过滤整个数组

例如,如果我想返回前两列中包含2的数组行,那么我要寻找的答案是isL

R = [1 2 3 4;...
     2 4 8 9];
或者,如果我想返回前两列中包含1的行,我要寻找的答案是

A = [1 2 3 4;...
     1 8 3 4];

我相信这是显而易见的,但我如何在MATLAB中做到这一点?基于
find
或求值命令(例如
A==2
)对整个数组进行过滤完全可以。这是一种基于多列的过滤,其顺序我无法理解。

要检查给定的数字,只需沿第二维度应用限制到所需的列,并使用该维度选择所需的行:

cols = [1 2]; %// columns to look at
val = 1; %// value to look for
R = A(any(A(:, cols)==val, 2), :);

例如,如果要查找多个值,请选择第1列或第2列中包含2或3的所有行:使用而不是
=

cols = [1 2]; %// columns to look at
vals = [2 3]; %// values to look for
R = A(any(ismember(A(:, cols), vals), 2), :);

如果要检查数字是否在范围内:

cols = [1 2]; %// columns to look at
v1 = 6; %// numbers should be greater or equal to this...
v2 = 8; %// ...and less than this
R = A(any(A(:, cols)>=v1, 2) & any(A(:, cols)<v2, 2), :);
cols=[12];%//要查看的列
v1=6;%//数字应大于或等于此。。。
v2=8;%/。。。比这个还少

R=A(any(A(:,cols)>=v1,2)和any(A(:,cols)要检查给定的数字,只需沿第二维度应用限制到所需的列,并使用该维度选择所需的行:

cols = [1 2]; %// columns to look at
val = 1; %// value to look for
R = A(any(A(:, cols)==val, 2), :);

例如,如果要查找多个值,请选择第1列或第2列中包含2或3的所有行:使用而不是
=

cols = [1 2]; %// columns to look at
vals = [2 3]; %// values to look for
R = A(any(ismember(A(:, cols), vals), 2), :);

如果要检查数字是否在范围内:

cols = [1 2]; %// columns to look at
v1 = 6; %// numbers should be greater or equal to this...
v2 = 8; %// ...and less than this
R = A(any(A(:, cols)>=v1, 2) & any(A(:, cols)<v2, 2), :);
cols=[12];%//要查看的列
v1=6;%//数字应大于或等于此值。。。
v2=8;%/…且小于此值

R=A(any(A(:,cols)>=v1,2)和any(A(:,cols)要检查给定的数字,只需沿第二维度应用限制到所需的列,并使用该维度选择所需的行:

cols = [1 2]; %// columns to look at
val = 1; %// value to look for
R = A(any(A(:, cols)==val, 2), :);

例如,如果要查找多个值,请选择第1列或第2列中包含2或3的所有行:使用而不是
=

cols = [1 2]; %// columns to look at
vals = [2 3]; %// values to look for
R = A(any(ismember(A(:, cols), vals), 2), :);

如果要检查数字是否在范围内:

cols = [1 2]; %// columns to look at
v1 = 6; %// numbers should be greater or equal to this...
v2 = 8; %// ...and less than this
R = A(any(A(:, cols)>=v1, 2) & any(A(:, cols)<v2, 2), :);
cols=[12];%//要查看的列
v1=6;%//数字应大于或等于此值。。。
v2=8;%/…且小于此值

R=A(any(A(:,cols)>=v1,2)和any(A(:,cols)要检查给定的数字,只需沿第二维度应用限制到所需的列,并使用该维度选择所需的行:

cols = [1 2]; %// columns to look at
val = 1; %// value to look for
R = A(any(A(:, cols)==val, 2), :);

例如,如果要查找多个值,请选择第1列或第2列中包含2或3的所有行:使用而不是
=

cols = [1 2]; %// columns to look at
vals = [2 3]; %// values to look for
R = A(any(ismember(A(:, cols), vals), 2), :);

如果要检查数字是否在范围内:

cols = [1 2]; %// columns to look at
v1 = 6; %// numbers should be greater or equal to this...
v2 = 8; %// ...and less than this
R = A(any(A(:, cols)>=v1, 2) & any(A(:, cols)<v2, 2), :);
cols=[12];%//要查看的列
v1=6;%//数字应大于或等于此值。。。
v2=8;%/…且小于此值


R=A(any(A(:,cols)>=v1,2)&any(A(:,cols)+1-实际上我正要打印一个答案,你打败了我,哈哈。一点也不奇怪。干得好,路易斯。@rayryeng这一个很简单:-)这只是一个快速/幸运的问题回答得很好!如果在前两列中搜索大于/等于2和小于8的值,即与特定值相对应的范围,你的数字总是整数吗?如果是,请使用我的第二种方法
vals=2:7
。如果不是,请告诉我,我会更新我的答案它们可能是非整数-整数也是+1-我实际上正要打印一个答案,你打败了我,哈哈。一点也不奇怪。干得好,路易斯。@rayryeng这一个很简单:-)这只是一个快速/幸运的问题回答得很好!如果在前两列中搜索大于/等于2和小于8的值,即与特定值相对应的范围,你的数字总是整数吗?如果是,请使用我的第二种方法
vals=2:7
。如果不是,请告诉我,我会更新我的答案它们可能是非整数-整数也是+1-我实际上正要打印一个答案,你打败了我,哈哈。一点也不奇怪。干得好,路易斯。@rayryeng这一个很简单:-)这只是一个快速/幸运的问题回答得很好!如果在前两列中搜索大于/等于2和小于8的值,即与特定值相对应的范围,你的数字总是整数吗?如果是,请使用我的第二种方法
vals=2:7
。如果不是,请告诉我,我会更新我的答案它们可能是非整数-整数也是+1-我实际上正要打印一个答案,你打败了我,哈哈。一点也不奇怪。干得好,路易斯。@rayryeng这一个很简单:-)这只是一个快速/幸运的问题回答得很好!如果在前两列中搜索大于/等于2和小于8的值,即与特定值相对应的范围,你的数字总是整数吗?如果是,请使用我的第二种方法
vals=2:7
。如果不是,请告诉我,我会更新我的答案它们可能是非整数-整数也是