【发布时间】:2015-06-29 12:24:43
【问题描述】:
我在 Matlab 中有一个单元格 C,尺寸为 mx1,例如m=3
C={{1 2 3; 4 5 6} {4 5 6} {7 8 9 10; 11 12 13 14; 15 16 17 18}}
有没有办法在不使用循环的情况下获取维度为mx1 的向量D 报告C 中每个子单元格的行数?以D=[2 1 3]'为例。
【问题讨论】:
标签: matlab
我在 Matlab 中有一个单元格 C,尺寸为 mx1,例如m=3
C={{1 2 3; 4 5 6} {4 5 6} {7 8 9 10; 11 12 13 14; 15 16 17 18}}
有没有办法在不使用循环的情况下获取维度为mx1 的向量D 报告C 中每个子单元格的行数?以D=[2 1 3]'为例。
【问题讨论】:
标签: matlab
这与您上一个(现已删除)的问题相同,只需使用 size 而不是 length:
D = cellfun(@(x)(size(x,1)), C)
但请注意,cellfun 只是 for 循环的包装器,因此这样做并不能避免循环。
注意更好的解决方案(来自 Luis Mendo 的评论)是
[D, ~] = cellfun(@size, C)
这样就可以一次性得到行数和列数:
[nr, nc] = cellfun(@size, c)
【讨论】:
[D, ~] = cellfun(@size, C)
请你试试这两条指令:
cellsz = cellfun(@size,C,'uni',false);
cellsz{:}
你会得到类似的东西:
ans =
4 2
ans =
3 1
ans =
5 3
【讨论】: