如果
A=[1 2 3;4 5 6;7 8 9]
B=[1 2 2]
我发现
- A(B==1,:)返回[1 2 3],并且
- A(B==2,:)返回[4 5 6;7 8 9]
因为
- B==1返回[1 0 0],并且
- B==2返回[0 1 1]
给定A和B的上述例子,是否有任何更简单的方法可以在一步中获得最终矩阵[1 2 3]和[4 5 6;7 8 9],即不使用for循环。
目标是生成聚类的质心,在K均值聚类问题中,每个示例(A中的行)都被分配到该质心。我正在考虑将得到的矩阵传递给mean()函数来生成质心。
您可以获得一个单元阵列
A = [1 2 3; 4 5 6; 7 8 9];
B = [1 2 2];
arrayfun(@(lev) A(B==lev, :), unique(B), 'UniformOutput', false)
返回
ans =
{
[1,1] =
1 2 3
[1,2] =
4 5 6
7 8 9
}