查找复杂单元格中所有嵌套单元格的数量

Finding number of all nested cells in a complex cell

我有一个代表树结构的嵌套单元格:

CellArray={1,1,1,{1,1,1,{1,1,{1,{1 1 1 1 1 1 1 1}, 1,1},1,1},1,1,1},1,1,1,{1,1,1,1}};

我想在 Matlab 中找出 节点 的数量。我在下面放了一张简单的图片,可以帮助您更准确地理解我在寻找什么:

谢谢。

如果我没理解错的话,你想要单元格元素的数量,它们本身就是单元格。 然后你可以递归地遍历你的单元格单元格(和数字)并检查 iscell 以查看哪些元素是单元格。见下文,其中 totnod 最终给出了节点数。

ind=cellfun(@iscell, Chains);
totnod=sum(ind);
oldtmp=Chains(ind);
while ~isempty(oldtmp)
       newtmp={};
       for i=1:length(oldtmp)
           ind=cellfun(@iscell, oldtmp{i});
           newtmp=[newtmp,oldtmp{i}(ind)];
           totnod=totnod+sum(ind);
       end
       oldtmp=newtmp;
end

这是一个更简单的方法,使用单个 while 循环并重复连接子单元格:

temp = CellArray;
nNodes = 0;
while iscell(temp)
  index = cellfun(@iscell, temp);
  nNodes = nNodes + sum(index);
  temp = [temp{index}];
end

问题中示例 CellArray 的结果:

nNodes =

     5