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