2014-06-11 115 views
2

是否有執行此示例的有效方法?將數組分組到單元格

values = randn(100,1); 
classes = randi(20,100,1); 
for ii = 1:numel(unique(classes)) 
    C{ii} = values(classes == ii); 
end 
+0

+1可運行代碼 –

回答

3

如果每個小區內的順序並不重要:你可以使用accumarrayanonymous function返回一個細胞:

C = accumarray(classes, values, [], @(x) {x}).'; 
+0

尼斯之一。使用匿名函數將其轉換爲單元格陣列是一個不錯的選擇... +1 – kkuilla

+0

@kkuilla是的,當我發現'accumarray'可以返回單元格時,這真是一個啓示! –

+0

我不知道。另一個......點在轉置之前做了什麼(''')?你是否在應用'轉置'元素? – kkuilla