如何基于另一个向量将一个矩阵拆分为多个矩阵



如果

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
}

相关内容

  • 没有找到相关文章

最新更新