2013-10-06 99 views

回答

6

使用cellfun

mean(cellfun(@length, mycell)) 

BTW,对于一些内置的功能可能会更好写

mean(cellfun('length', mycell)) 
+1

非常好,非常感谢。 – brucezepplin

4

如果您的电池阵列只包含行向量或仅列向量,有一个替代方法,不使用cellfun

  • 如果您的电池阵列包含行向量:如果您的单元阵列包含列向量

    length([mycell{:}])/numel(mycell)

    length(horzcat(mycell{:}))/numel(mycell)

  • length(vertcat(mycell{:}))/numel(mycell)

  • 使用了上述两种

如果单元阵列很小,这个回答比@Shai's要快。对于中等或大尺寸,或作为一般答案,他的解决方案(第二版)更好。

+1

这个方法为什么要更快?你测试过了吗?我相信它可能会比较慢,因为'[mycell {:}]'实际上分配并将单​​元格数组的内容复制到一个temp变量中,以便测试它的长度。目前我还无法访问Matlab,但测试哪种方法的速度确实很快,这会很有趣。 – Shai

+0

我更快,因为它避免了'cellfun',但你是对的,对于大型矢量它可能实际上更慢 –

+0

'cellfun'不一定比其他选项慢。 – Shai

相关问题