在matlab中用动态名称保存分支结构的字段

Save fields of branched structure with dynamic names in matlab

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

data.level1.level21  
data.level1.level22

我现在想单独保存分支 data.level1.level21data.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

您使用的结构保存方法 trying to use 并不像您期望的那样有效。结构变量名称后的所有参数都是要保存的 that 结构的字段。

MATLAB 解释您的代码的方式是您试图保存 datalevel1level21 字段,这显然不起作用,因为 level21level1 not 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