0

我需要知道如何在 MATLAB 中只保存结构的一个分支。该结构包含更多级别,每个级别有更多字段。例如:

data.level1.level21  
data.level1.level22

data.level1.level21我现在想data.level1.level21单独保存分支。我尝试了以下方法,但它不起作用:

firstLevelName = fieldnames(data);
secondLevelNames = fieldnames(data.(firstLevelName{1}));

for pL = 1:length(secondLevelNames)
        save([filename '.mat'], '-struct', 'data', firstLevelName{1}, secondLevelNames{pL});
end
4

1 回答 1

1

尝试使用的结构保存方法并不像您期望的那样工作。结构变量名称后的所有参数都是要保存的结构的字段。

MATLAB 解释您的代码的方式是您试图保存level1, 和显然不起作用的level21字段,因为它是not的子字段。datalevel21level1 data

要保存嵌套字段,最简单的方法可能是创建一个指向结构的新变量data.level,然后调用save它并指定要保存的特定字段。

level1 = data.level1;

for pL = 1:numel(secondLevelNames)
    save(filename, '-struct', 'level1', secondLevelNames{pL});
end

如果您确实想要在保存的数据中进行双重嵌套,则需要创建一个仅包含您想要的数据的新结构,然后将其保存。

for pL = 1:numel(secondLevelNames)
    newstruct = struct(firstLevelName{1}, struct());
    newstruct.(secondLevelNames{pL}) = data.(firstLevelName{1}).(secondLevelNames{pL});

    save(filename, '-struct', 'newstruct')
end
于 2016-03-11T13:02:38.560 回答