我想计算单元格数组中的所有元素,包括"嵌套"单元格中的元素.
对于单元阵列
>> C = {{{1,2},{3,4,5}},{{{6},{7},{8}},{9}},10}
C = {1x2 cell} {1x2 cell} [10]
Run Code Online (Sandbox Code Playgroud)
答案应该是10.
一种方法是[C{:}]反复使用,直到没有剩下的细胞然后使用numel但必须有更好的方法?
既然你只在感兴趣元素的个数,这里是一个简化版本flatten.m是@Ansari链接:
function n = my_numel(A)
n = 0;
for i=1:numel(A)
if iscell(A{i})
n = n + my_numel(A{i});
else
n = n + numel(A{i});
end
end
end
Run Code Online (Sandbox Code Playgroud)
结果:
>> C = {{{1,2},{3,4,5}},{{{6},{7},{8}},{9}},10};
>> my_numel(C)
ans =
10
Run Code Online (Sandbox Code Playgroud)
如果你感到懒惰,我们可以让CELLPLOT进行计数:
hFig = figure('Visible','off');
num = numel( findobj(cellplot(C),'type','text') );
close(hFig)
Run Code Online (Sandbox Code Playgroud)
基本上我们创建一个不可见的图形,绘制单元格数组,计算创建了多少"文本"对象,然后删除不可见的图形.
这是情节在下面的样子:

| 归档时间: |
|
| 查看次数: |
4834 次 |
| 最近记录: |