2017-01-12 17 views
-1

我已經使用Matlab中的內置函數在某些數據集(500x39矩陣)上做了一些k均值聚類。選擇7個羣集。來源:在另一個函數中使用聚類索引

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

我讓我的簇索引,IDX(39X 1),和心位置,C(500x7)。

然後我想使用此idx輸出和我的數據集在一個Multiblock PCA功能可在線(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每個號碼。

回答

0

您可以使用accumarray確定每個唯一索引

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

本質上的位置,這是什麼一樣的是,它使用您的idx arrray(第一輸入),以「組」的值(對應列索引每個值指定爲第二個輸入),並對每個組執行一個操作,在這種情況下,這只是一個匿名函數,它將一個組中的所有值存入一個單元陣列中。

+0

謝謝,這個作品非常好 – MRaff16

相關問題