How can I concatenate or merge two structures?

884 visualizzazioni (ultimi 30 giorni)
MathWorks Support Team il 27 Giu 2009
I would like to merge two structures into a new structure containing all the fields of the two original structures. How can I do this in MATLAB?

Risposta accettata

MathWorks Support Team il 28 Mar 2023
Modificato: MathWorks Support Team il 30 Mar 2023
There is no direct ability in MATLAB that can be used to concatenate structures.
The attached file "mergeStructs.m" shows a number of methods that can be used to merge structures in MATLAB.
There are also online submissions on the MATLAB Central User Community that you can use. One such submission is:
Note that MathWorks does not guarantee or warrant the use or content of these submissions. Any questions, issues, or complaints should be directed to the contributing author.
1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Royi Avital il 23 Mag 2020
Is there a way which is MATLAB Codeer friendly?

Accedi per commentare.

Più risposte (3)

Ba Mo il 12 Nov 2019
This works IF AND ONLY IF there are no common fields (duplicate fields) in the 2 structures.
mergestructs = @(x,y) cell2struct([struct2cell(x);struct2cell(y)],[fieldnames(x);fieldnames(y)]);
I don't see why nobody pointed this out. it's intuitive!
2 CommentiMostra NessunoNascondi Nessuno
Adam Danz il 10 Feb 2021
Nice one, Ba Mo.
(Answer edited to format the line of code)
KAE il 16 Feb 2023
How do I execute this if I have two structures named Struct1 and Struct2?

Accedi per commentare.

James il 23 Ago 2016
You can do this manually:
f = fieldnames(structA);
for i = 1:length(f)
structB.(f{i}) = structA.(f{i})
end
0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

John Beaumont il 12 Set 2017
Convert structures to tables, then merge tables, then convert resulting table back to a structure.
% Create 1st structure
aa_s.val1 = 1;
aa_s.val2 = 2;
% Create 2nd structure
bb_s.val3 = 3;
bb_s.val4 = 4;
% Convert structures to tables
aa_t = struct2table( aa_s );
bb_t = struct2table( bb_s );
% Concatonate tables
merge_t = [ aa_t ,bb_t ];
% Convert table to structure
merge_s = table2struct( merge_t )
0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

Categorie

Scopri di più su Structures in Help Center e File Exchange

R2006b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by