Creating a variable with the values in the same fields of different structures

1 view (last 30 days)
Hi,
I am writing an app where I want to compare the results stored in different mat sessions, say S1.mat, S2.mat,....... (the names are in reality more complex but this is not the point).
The number of sessions is not fixed, it may vary. Each session contains a structure, say I1, I2,....
These structures have all the same fields, I copy below only same of that:
Q: 9
Ifx: [100×1 double]
T: 180
P: [12×1 struct]
Pars: [12×1 double]
After loading the (not fixed) number of the structures, I want to create new varibales by combining the values having the same fields, for instance:
1) Qnew=[I1.Q, I2.Q,...In.Q]; % combining values in field Q
Is there a command for that?
2) Is possible to extend this to the structures too?
In this case I need to recover the names of the fields and to create a variable wiht the same name:
A1=[I1.P.A1, I2.P.A2,...In.P.An];
Thank you in advance!

Accepted Answer

Matt J
Matt J on 17 Mar 2022
Edited: Matt J on 17 Mar 2022
Well, I won't give you a solution that creates separate variables, since there are standard hazards associated with that. However, the attached file will probably be of use to you. Example,
I(1).a=1; I(1).b=10; I(1).c=100;
I(2).a=2; I(2).b=20; I(2).c=200;
I(3).a=3; I(3).b=30; I(3).c=300;
out=scalarize_struct(I)
out = struct with fields:
a: [1 2 3] b: [10 20 30] c: [100 200 300]
  6 Comments
Matt J
Matt J on 17 Mar 2022
The command "S"+1:n does not work for me because of the symbol :.
Shouldn't be a problem with my latest edit.

Sign in to comment.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!