【问题标题】:Save all but some fields of a struct to a file in MATLAB将结构的所有字段(除某些字段外)保存到 MATLAB 中的文件中
【发布时间】:2016-10-03 20:51:06
【问题描述】:

我有一个结构变量 parameters 和一些其他变量,例如 foo1foo2parameters 有 20 个字段。前任。 a,b,c,d,e ... 我只想保存 18 个字段。我不想保存parameters.aparameters.b。所以我想保存parameters 除了字段abfoo1foo2。我该怎么做?

【问题讨论】:

    标签: matlab save matlab-struct


    【解决方案1】:

    您可以在使用rmfield 保存之前删除这些字段。

    tosave = rmfield(parameters, {'a', 'b'});
    save(filename, '-struct', 'tosave');
    

    或者您可以获得所有字段的列表,删除您不需要的字段,然后将它们传递给save。这样做的另一个好处是不必复制struct

    % Get all fields of parameters
    allfields = fieldnames(parameters);
    
    % Remove the fields you don't want to keep
    fields = allfields(~ismember(allfields, {'a', 'b'}));
    
    % Now save the rest
    save(filename, '-struct', 'parameters', fields{:});
    

    或者正如@excaza 所说,您可以制作带有-regexp 标志的正则表达式来排除您不想要的变量。

    【讨论】:

    • 或正则表达式:save(filename, '-struct', 'data', '-regexp', '[^ab]'); 不过可能比ismember 更痛苦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2014-10-27
    相关资源
    最近更新 更多