嗨我在matlab中有一个单元格数组,其中单元格的长度不同。我如何确定细胞的平均长度。
我试过了:
mean(length(mycell{:});
然而,这对于平均函数来说输入太多了。
感谢。
答案 0 :(得分:6)
使用cellfun
mean( cellfun( @length, mycell ) )
BTW,对于某些内置函数,编写可能更好
mean( cellfun( 'length', mycell ) )
答案 1 :(得分:4)
如果您的单元格数组仅包含行向量或仅包含列向量,则有一种替代方法不使用cellfun
。
如果您的单元格数组包含行向量:请使用以下任一项:
length([mycell{:}])/numel(mycell)
length(horzcat(mycell{:}))/numel(mycell)
如果您的单元格数组包含列向量:
length(vertcat(mycell{:}))/numel(mycell)
如果单元格数组较小,则此答案比@Shai's快。对于中等或大尺寸,或作为一般答案,他的解决方案(第二版)更好。