MATLAB: How to concatenate structs with different fieldnames

concatenateMATLABstructstructures

I'm looking for a way to concatenate structures which have different fieldnames into one struct array of with similar fieldnames.
Below you will find a minimum working example:
% Convert this
Object(1).Stats.Var1 = 1;
Object(1).Stats.Var2 = 2;
Object(2).Stats.Var1 = 1;
% Towards this
Output = [struct('Var1', 1, 'Var2', 2);
struct('Var1', 1, 'Var2', [])];
% But this doesn't work
[Object.Stats]
This returns an error message "Number of fields in structure arrays being concatenated do not match. Concatenation of structure arrays requires that these arrays have the same set of fields."

Best Answer

Just use some loops (this will be quite efficient):
A(1).Stats.Var1 = 1;
A(1).Stats.Var2 = 2;
A(2).Stats.Var1 = 3;
Z = repmat(struct(),size(A));
for ii = 1:numel(A)
S = A(ii).Stats;
F = fieldnames(S);
for jj = 1:numel(F)
Z(ii).(F{jj}) = S.(F{jj});
end
end
And checking:
>> Z(1).Var1
ans = 1
>> Z(1).Var2
ans = 2
>> Z(2).Var1
ans = 3
>> Z(2).Var2
ans = []