How can I concatenate or merge two structures?
    412 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    MathWorks Support Team
    
 el 27 de Jun. de 2009
  
    
    
    
    
    Editada: MathWorks Support Team
    
 el 30 de Mzo. de 2023
            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?
Respuesta aceptada
  MathWorks Support Team
    
 el 28 de Mzo. de 2023
        
      Editada: MathWorks Support Team
    
 el 30 de Mzo. de 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 comentario
Más respuestas (3)
  Ba Mo
      
 el 12 de Nov. de 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 comentarios
  John Beaumont
      
 el 12 de Sept. de 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 comentarios
  James
      
 el 23 de Ag. de 2016
        You can do this manually:
 f = fieldnames(structA);
 for i = 1:length(f)
    structB.(f{i}) = structA.(f{i})
 end
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!