1

如果

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 均值聚类问题中分配到的聚类质心。我正在考虑将生成的矩阵传递给 mean() 函数以生成质心。

4

1 回答 1

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

}
于 2013-06-28T14:32:11.590 回答