2016-12-06 41 views
0

我有兩個結構,AB,我想將B中的所有字段複製到A。我不能做一個簡單的A=B;任務,因爲A有許多其他字段,我想保持不受影響。現在我一直按名稱分別分配每個字段。有沒有一種很好的方法可以將B中的所有字段複製到A,而無需單獨分配每個字段?我能夠想到的最好的方法是使用A.(fieldname)語法將它們全部分配到一個循環中,但我希望可能有一條單線解決方案。將所有字段複製到較大結構

回答

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'}); 
相關問題