在另一个函数中使用聚类索引

时间:2017-01-12 16:11:26

标签: matlab cluster-analysis

我使用Matlab中的内置函数在一些数据集500x39矩阵上完成了一些k-means聚类。选择7个集群。来自:

[idx,C] = kmeans(Data',No_Clusters)

我得到了我的集群索引,idx(39x1)和质心位置,c(500x7)。

然后,我希望在可在线使用的多块PCA功能中使用此idx输出和我的数据集(http://www.models.life.ku.dk/~courses/MBtoolbox/mbtmain.htm)。所以说我的idx是

idx = 5 4 1 5 7 3 2 6 7 1 3 ... 

表示数据集中的每一列。我想安排它给我

[3,10][7][6,11][2][1,4][8][5,9]

其中[]中的每个数字对应于群集idx的数据集中的列。

1 个答案:

答案 0 :(得分:0)

您可以使用accumarray来确定每个唯一索引的位置

result = accumarray(idx(:), (1:numel(idx)).', [], @(x){x})

基本上它的作用是它使用你的idx arrray(第一个输入)来“组合”值(对应于指定为第二个输入的每个值的列索引)并对每个组执行操作在这种情况下,它只是一个匿名函数,它接受一个组中的所有值并将它们放入一个单元格数组中。