使用具有特定字段名称的循环从结构中提取数据

时间:2016-07-13 19:43:29

标签: matlab

我使用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将始终仅返回结构的大小。 我已经通过在正确的调用中进行硬编码来测试它,这可以正常工作,但在循环中会中断。

1 个答案:

答案 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/