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

조회 수: 1 (최근 30일)
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!

채택된 답변

Matt J
Matt J 2022년 3월 17일
편집: Matt J 2022년 3월 17일
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
Matt J
Matt J 2022년 3월 17일
The command "S"+1:n does not work for me because of the symbol :.
Shouldn't be a problem with my latest edit.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by