How do I loop through a structure field which contains multiple arrays?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Inti Vanmechelen
am 4 Jan. 2019
Kommentiert: Inti Vanmechelen
am 4 Jan. 2019
Hi all,
I have a big structure which contains different substructures.
The structure is called 'subjects' and contains information for each subject.
However, I am interested in angles, which are located in subjects.sessions.trials(1).data.angles.
subjects.sessions.trials(1).data.angles contains 28 fields, all being a 1289x1 double, which all have names of different angles.
I want to plot the 28 angles by looping through, but I cannot manage to select what I need in the for loop:
for i = 1:NSessions
figure();
plot(subjects.sessions.trials(i).data.angles. ......);
end
Attached is a snapshot of what the structure field looks like.![matlab.PNG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/200160/matlab.png)
![matlab.PNG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/200160/matlab.png)
I tried creating a cell array with the 28 names and then use
for i = 1:NSessions
for k = 1:NAngleName
figure();
plot(subjects.sessions.trials(i).data.angles.AngleName{k});
end
end
But this is not working.
Thanks in advance.
2 Kommentare
Akzeptierte Antwort
Daniele Mascali
am 4 Jan. 2019
If you want to make your last attempt work, you might use eval:
eval(['plot(subjects.sessions.trials(i).data.angles.',AngleName{k},');']);
3 Kommentare
Daniele Mascali
am 4 Jan. 2019
You are right.
However, I was not aware of Dynamic Field References. One very simple solution is
plot(subjects.sessions.trials(i).data.angles.(AngleName{k}));
Thanks for the link!!
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!