【问题标题】:Number of rows of each sub-cell in a cell array元胞数组中每个子元胞的行数
【发布时间】: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


    【解决方案1】:

    这与您上一个(现已删除)的问题相同,只需使用 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)
    【解决方案2】:

    请你试试这两条指令:

    cellsz = cellfun(@size,C,'uni',false);
    cellsz{:}
    

    你会得到类似的东西:

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

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      相关资源
      最近更新 更多