我有一个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
如果变量不是矩阵而是对象,上述解决方案对变量的作用是否相同?
答案 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