按某些列值过滤Matrix

时间:2013-01-15 15:53:20

标签: matlab matrix

考虑我有这个矩阵:

   02, 04, 06, 08, 10, 2
   07, 14, 21, 28, 35, 2
   11, 22, 33, 44, 55, 0
   15, 14, 21, 28, 35, 2

我想拥有相同的矩阵,但只有最后column = 2的行。所以我想要这个矩阵:

   02, 04, 06, 08, 10, 2
   07, 14, 21, 28, 35, 2
   15, 14, 21, 28, 35, 2

我可以解析所有矩阵,但还有其他方法吗?

修改

更确切地说,我有一个带字符串的单元格数组:

   02, 04, Some String, 08, 10, 2
   07, 14, Some String1, 28, 35, 2
   11, 22, Some String1, 44, 55, 0
   15, 14, Some String, 28, 35, 2

1 个答案:

答案 0 :(得分:30)

只需对矩阵的行使用逻辑索引:

row_idx = (A(:, end) == 2);

现在row_idx包含一个10 s的逻辑数组,其中1 s表示行的最后一个元素等于2。

现在使用以下内容过滤这些行:

A_filtered = A(row_idx, :);

所有这些步骤通常都在一行中执行:

A_filtered = A(A(:, end) == 2, :);