如何从矩阵中获取选择行并在八度音程中形成一个新矩阵?

时间:2014-06-13 07:06:18

标签: matlab matrix octave

假设我有八度矩阵

A = [2 3 5;
     5 6 7; 
     8 9 10;
     1 2 5]

现在我想只得到最后一列所说的等于5的行。我想知道是否有内置函数,因为现在我正在这样做。

collection = [];
for i = 1 : size(matrix,1),
    if(matrix(i,3) == 5),
        collection = [collection; matrix(i,:)];
    end
end

如果存在单列矩阵的这种方法,我会没事的。

1 个答案:

答案 0 :(得分:2)

您可以使用最后一列的逻辑索引来执行此操作,例如

A(:,end) == 5

返回一个逻辑矩阵,对于您想要的行,该矩阵为true,否则为false。我们可以用它来选择像这样的行

ind = A(:,end) == 5;
A(ind,:); 

你甚至可以直接进行内联:

A(A(:,end)==5,:)