How to add (combine) together two structures with the same fields?

141 views (last 30 days)
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.

Sign in to comment.

Accepted Answer

KSSV on 11 Jun 2021
clc; clear ; = 'Tom' ; = 'm';
s1.age = 25 ; = 'Harry' ; = '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})} ;
dleal on 20 Apr 2022
Edited: dleal on 20 Apr 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)) ];

Sign in to comment.

More Answers (0)


Find more on Structures in Help Center and File Exchange


Community Treasure Hunt

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

Start Hunting!

Translated by