我使用h5read从HDF5文件导入数据,h5read输出带有命名字段的结构。目前,我正在尝试获取每个字段的大小。
for n = 1:namesSizeH5
currentName = strcat('h5(1).',namesH5((0+n):n));
currentSize = size(currentName);
disp('currentName is');
disp(currentName);
disp('currentSize is');
disp(currentSize);
end
当它运行时,它正确地抓取每次迭代的当前字段名称,以及构造正确的struct调用以按顺序到达每个字段。但是,currentSize将始终仅返回结构的大小。 我已经通过在正确的调用中进行硬编码来测试它,这可以正常工作,但在循环中会中断。
答案 0 :(得分:0)
以下代码说明了如何获取结构中每个字段的大小。只需根据您的情况调整代码即可。
% Create struct
sampleStruct.field1 = 'This is field 1';
sampleStruct.field2 = true(5);
sampleStruct.field3 = randn(1,5);
% Get fieldnames
fnames = fieldnames(sampleStruct);
% Display fields size
for i=1:length(fnames)
disp(['Field name is: ' fnames{i}]);
fieldValue = sampleStruct.(fnames{i});
fieldSize = size(fieldValue);
disp(['Field size is: ' mat2str(fieldSize)]);
end
输出结果为:
Field name is: field1
Field size is: [1 15]
Field name is: field2
Field size is: [5 5]
Field name is: field3
Field size is: [1 5]
有用功能:fieldnames
。只需在命令窗口中键入doc fieldnames
即可查看帮助文档。
推荐阅读: http://imageprocessinglog.com/tutorials/matlab-structures-datatype/