如何只保留与另一个矩阵中的值对应的矩阵中的那些行?

时间:2018-01-03 13:28:27

标签: matlab matrix

我有一个m×n矩阵A,其中m和n都是非常大的值,另一个列矩阵B(具有重复值)包含一些行值。我需要创建一个新的矩阵,它只保留A中按顺序存在于B中的那些行,并丢弃其余的行。

示例:

A = [2 5 6;
     7 3 9;
    -6 4 5;
     6 7 3];

B = [2;
     4;
     2;
     1]; 

输出C应包含A行,如下所示:

C = [7 3 9;
     6 7 3;
     7 3 9;
     2 5 6];

我已经使用过这个循环并试图在不需要新矩阵C的情况下完成它,但这是错误的。

for n = 1:length(B)
   A(~B(n),:)=[];
end

如果变量不是矩阵而是对象,上述解决方案对变量的作用是否相同?

1 个答案:

答案 0 :(得分:2)

关于索引的全部内容:

A = [
  2 5 6;
  7 3 9;
 -6 4 5;
  6 7 3
];

B = [2; 4; 2; 1];

% use B to index the rows of A, basically you
% you tell Matlab to create a new matrix C
% from the rows 2, 4, 2 (again) and 1 of A

C = A(B,:)

输出:

C =

   7  3  9
   6  7  3
   7  3  9
   2  5  6