【问题标题】:Save fields of branched structure with dynamic names in matlab在matlab中用动态名称保存分支结构的字段
【发布时间】:2016-03-11 12:04:14
【问题描述】:

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

【问题讨论】:

    标签: matlab structure matlab-struct


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      相关资源
      最近更新 更多