将所有字段复制到更大的结构

时间:2016-12-06 16:25:54

标签: matlab structure

我有两个结构,AB,我想将B中的所有字段复制到A。我无法对A=B;进行简单的分配,因为A还有许多其他字段我希望不受影响。现在我一直在按名称分配每个字段。有没有一种方法可以将B的所有字段复制到A,而无需单独分配每个字段?我能够提出的最好的方法是使用A.(fieldname)语法将它们全部分配到循环中,但我希望可能有一个单行解决方案。

1 个答案:

答案 0 :(得分:3)

如果您只想复制某些字段,那么动态字段引用是最佳方法。

fields_to_copy = {'one', 'two'};

for k = 1:numel(fields_to_copy)
    A.(fields_to_copy{k}) = B.(fields_to_copy{k});
end

如果您不想覆盖A中的任何字段,可以按以下方式创建要复制的字段列表

fields_to_copy = setdiff(fieldnames(B), fieldnames(A));

或者,如果您要保留A中的特定字段

fields_to_copy = setdiff(fieldnames(B), {'keep', 'these', 'fields'});