2014-06-11 112 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