如何从矩阵中选择具有特定列值的行?

时间:2016-11-30 20:03:20

标签: matlab matrix matrix-multiplication

我有一个矩阵列车。

1    2    3    4    5    6    7
2   12   13   14   15   16   17
3   62   53   44   35   26   17
4   52   13   24   15   26   37

我想只选择那些第一列包含特定值的行(在我的例子中为1和2)。

我尝试了以下内容,

>> train3
train3 =
    1    2    3    4    5    6    7
    2   12   13   14   15   16   17
    3   62   53   44   35   26   17
    4   52   13   24   15   26   37

>> ind1 = train3(:,1) == 1
ind1 =
   1
   0
   0
   0

>> ind2 = train3(:,1) == 2
ind2 =
   0
   1
   0
   0

>> mat1 = train3(ind1, :)
mat1 =
   1   2   3   4   5   6   7

>> mat2 = train3(ind2, :)
mat2 =
    2   12   13   14   15   16   17

>> mat3 = [mat1 ; mat2]
mat3 =                                                                                                                                         
    1    2    3    4    5    6    7
    2   12   13   14   15   16   17

>>

有没有更好的方法呢?

2 个答案:

答案 0 :(得分:2)

据推测,您正试图通过以下步骤获得mat3:

mat3 = train3(train3(:,1)==1 | train3(:,1)==2,:)

答案 1 :(得分:2)

更常见的方法是使用ismember获取与列表中的值匹配的所有行:

train3 =[
    1    2    3    4    5    6    7
    2   12   13   14   15   16   17
    3   62   53   44   35   26   17
    4   52   13   24   15   26   37];

chooseList = [1 2];

colIndex = ismember(train3(:, 1), chooseList);

subset = train3(colIndex, :);

subset =

     1     2     3     4     5     6     7
     2    12    13    14    15    16    17