How to add (combine) together two structures with the same fields?
    54 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Dear All,
I have two structures A and B with the same fields. How can I combine them together to form a new structure? 
For example, A = struct('field1', array1, 'field2', array2); B = struct('field1', array3, 'field2', array4). A and B have the same fields 'field1' and 'field2'. I want to combine A and B together to obtain structure C = struct('field1', [array1; array3], 'field2', [array2; array4]). array1 and array3 have the same number of columns, and array2 and array4 have the same number of columns. 
Thanks.
Benson
2 commentaires
  Geoff Hayes
      
      
 le 11 Juin 2021
				Benson - what should the new structure look like? If A and B have the same fields, then does that mean that the combined A and B have array fields? Please illustrate with a small example.
Réponse acceptée
  KSSV
      
      
 le 11 Juin 2021
        clc; clear ;
s1.name = 'Tom' ;
s1.sex = 'm';
s1.age = 25 ;
s2.name = 'Harry' ;
s2.sex = 'f';
s2.age = 26 ;
% Structure array
s = [s1 ; s2] 
% Single structure
S = struct ;
aField     = fields(s1);
for i = 1:3
    S.(aField{i}) = {s1.(aField{i}) s2.(aField{i})} ;
end
S
4 commentaires
  Stephen23
      
      
 le 11 Juin 2021
				Note that the loop does not concatenate the field data as your qustion shows, but instead nests the field data within a 1x2 cell array.
  dleal
      
 le 20 Avr 2022
				
      Modifié(e) : dleal
      
 le 20 Avr 2022
  
			Hi, I have a similar question.. 
given two structs with numerical values:
S1 = struct; S2 = struct;
S1.A = [1,2];   S1.B = [3, 4];
S2.A = [9,10]; S2.B = [11,12];
is there a way to combine them into S3 so that S3.A = [1,2,9,10]  and S3.B = [3,4,11,12]?
I would just do it with a for loop, but I wonder if there is a way that might be less expensive:
S3.A = [];
S3.B = [];
fNames = fieldnames(S1);
for jj = 1:numel(fNames)
    S3.(fNames(jj) = [S1.(fNames(jj)) ,  S2.(fNames(jj)) ];
end
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Audio and Video Data dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




