如何基于另一个向量将矩阵分割成几个矩阵

时间:2013-06-28 11:35:33

标签: machine-learning octave linear-algebra

如果

  

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循环。

目标是生成群集的质心,每个示例(A中的行)已在K-means聚类问题中分配。我正在考虑将生成的矩阵传递给mean()函数以生成质心。

1 个答案:

答案 0 :(得分:1)

你可以得到一个单元格数组

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

}