Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 单元数组中每个子单元的行数_Matlab - Fatal编程技术网

Matlab 单元数组中每个子单元的行数

Matlab 单元数组中每个子单元的行数,matlab,Matlab,我在Matlab中有一个尺寸为mx1的单元格C,例如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]”中,这与您上一个(现已删除)问题相同,只需使用大小而不是长度: D = cellfun(@(x)(size(x,1)), C) 但请注意,cellfun只是for循环的包装器,因此这样做并不能避

我在Matlab中有一个尺寸为mx1的单元格
C
,例如
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]”

中,这与您上一个(现已删除)问题相同,只需使用
大小
而不是
长度

D = cellfun(@(x)(size(x,1)), C)
但请注意,
cellfun
只是for循环的包装器,因此这样做并不能避免循环

注:更好的解决方案(来自Luis Mendo的评论)是

通过这种方式,您可以在一次拍摄中获得行数和列数:

[nr, nc] = cellfun(@size, c)

这与您上一个(现已删除)问题相同,只需使用
大小
而不是
长度

D = cellfun(@(x)(size(x,1)), C)
但请注意,
cellfun
只是for循环的包装器,因此这样做并不能避免循环

注:更好的解决方案(来自Luis Mendo的评论)是

通过这种方式,您可以在一次拍摄中获得行数和列数:

[nr, nc] = cellfun(@size, c)

您能试试这两个说明吗:

cellsz = cellfun(@size,C,'uni',false);
cellsz{:}
您将得到如下结果:

ans =
   4     2
ans =
  3    1
ans =
   5    3

您能试试这两个说明吗:

cellsz = cellfun(@size,C,'uni',false);
cellsz{:}
您将得到如下结果:

ans =
   4     2
ans =
  3    1
ans =
   5    3
[D,~]=cellfun(@size,C)
[D,~]=cellfun(@size,C)