查找复杂单元格中所有嵌套单元格的数量
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
我有一个代表树结构的嵌套单元格:
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