代码之家  ›  专栏  ›  技术社区  ›  shamalaia

ncinfo中结构字段的大小

  •  1
  • shamalaia  · 技术社区  · 7 年前

    我想得到结构中某个字段的大小。

    例如,字段的大小 Name 场内 Dimensions 从中获取的结构的 ncinfo :

    finfo = ncinfo('example.nc');
    finfo.Dimensions.Name
    
    >>ans =
    
    x
    
    
    ans =
    
    y
    
    
    ans =
    
    z
    

    只是使用 size 导致明显错误:

    size(finfo.Dimensions.Name)

    使用大小时出错 输入参数太多。

    我怎样才能用另一种方式呢?

    另外,我想保存 finfo.Dimensions.Name 在单独的数组或结构中。但我得到了一个类似的错误。例如:

    a.b=finfo.Dimensions.Name
    

    返回错误:

    分配中的非法右手边。元素太多。

    2 回复  |  直到 7 年前
        1
  •  2
  •   sco1    7 年前

    根据 documentation for ncinfo , Dimensions 是一个 大堆 所以你需要更明确地表达你想要做的事情。

    如果你想要 size 'Dimensions' 字段,则这是您的查询:

    S.Dimensions(1).Name = 'x';
    S.Dimensions(2).Name = 'y';
    S.Dimensions(3).Name = 'z';
    
    size(S.Dimensions)
    

    返回:

    ans =
    
         1     3
    
        2
  •  1
  •   gnovice    7 年前

    你的问题是 Dimensions 返回的结构中的字段 ncinfo 本身就是一个 array of structures ,当您访问结构数组的字段时,它返回一个 comma-separated list of values ,每个数组元素一个。您需要收集这些值,例如在 cell array :

    nameCell = {finfo.Dimensions.Name};  % Now a 1-by-3 cell array of names
    

    如果您只想知道尺寸的数量,可以检查 尺寸 类似这样的字段:

    N = size(finfo.Dimensions);