我需要知道如何在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
答案 0 :(得分:1)
您trying to use的结构保存方法无法按照您期望的方式运行。结构变量名后的所有参数都是要保存的 结构的字段。
MATLAB解释代码的方式是,您尝试保存level1
的{{1}}和level21
字段,这些字段显然不起作用data
是level21
不是 level1
的子字段。
要保存嵌套字段,最简单的方法可能是创建一个指向结构data
的新变量,然后在其上调用data.level
并指定要保存的特定字段。
save
如果您确实希望在保存的数据中进行双重嵌套,则需要创建一个仅包含所需数据的新结构,然后将其保存。
level1 = data.level1;
for pL = 1:numel(secondLevelNames)
save(filename, '-struct', 'level1', secondLevelNames{pL});
end