在matlab

时间:2016-03-11 12:04:15

标签: matlab structure matlab-struct

我需要知道如何在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

1 个答案:

答案 0 :(得分:1)

trying to use的结构保存方法无法按照您期望的方式运行。结构变量名后的所有参数都是要保存的 结构的字段。

MATLAB解释代码的方式是,您尝试保存level1的{​​{1}}和level21字段,这些字段显然不起作用datalevel21 不是 level1的子字段。

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

save

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

level1 = data.level1;

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