ncinfo的struct字段的大小

时间:2017-12-06 20:26:30

标签: matlab struct netcdf

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

例如,从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 个答案:

答案 0 :(得分:2)

根据documentation for ncinfoDimensions是结构的数组,因此您需要更明确地了解您想要做的事情。

如果您需要'Dimensions'字段的size,那么这就是您的查询:

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

size(S.Dimensions)

返回:

ans =

     1     3

答案 1 :(得分:1)

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

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

如果您只想知道尺寸数量,可以检查Dimensions字段的大小,如下所示:

N = size(finfo.Dimensions);