我想获得结构中某个字段的大小。
例如,从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
返回错误:
非法右派任务。元素太多了。
答案 0 :(得分:2)
根据documentation for ncinfo
,Dimensions
是结构的数组,因此您需要更明确地了解您想要做的事情。
如果您需要'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);