loop through a multi layered structure

19 Ansichten (letzte 30 Tage)
N
N am 13 Aug. 2014
Bearbeitet: Stephen23 am 16 Jan. 2018
I have a dataset that consist of a structure in a structure, etc...,
example: data (1x1 struct) with 5 fields (body parts), consists of: - head(1x1 struct), torso(1x1 struct),arm(1x1 struct), leg(1x1 struct), feet(1x1 struct). each struct consists again of 4 fields(types of bones) and these fields consist of 12 fields (measurements),these 12 fields are the same for all bones and body parts.
I want to be able to do a calculation on a specific measurement field of each bone of each body part. How do I do this? So I want to make a loop that goes for example to head.1bone.angle and does the calculation (mean) there and then go to head.2bone.angle, etc.. then to torso.1bones.angle etc... Is this possible to do this?

Akzeptierte Antwort

Guillaume
Guillaume am 13 Aug. 2014
Use fieldnames and dynamic fields. e.g:
for field = fieldnames(data)'
for subfield = fieldnames(data.(field{1}))'
result = mean(data.(field{1}).(subfield{1}).angle)
end
end
  5 Kommentare
Tiasa Ghosh
Tiasa Ghosh am 16 Jan. 2018
If suppose I wanted to combine each element at each sub-level of the nested structure into one string, how do I run the loop to output such a string? Any hint or help is welcome. Thanks!
Stephen23
Stephen23 am 16 Jan. 2018
Bearbeitet: Stephen23 am 16 Jan. 2018
"If suppose I wanted to combine each element at each sub-level of the nested structure into one string, how do I run the loop to output such a string?"
Simply split the string at the delimiter and then call getfield / setfield directly.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Azzi Abdelmalek
Azzi Abdelmalek am 13 Aug. 2014
Use structfun function

Guillaume
Guillaume am 13 Aug. 2014
Or using structfun, if you want the result as a structure:
structfun(@(part) structfun(@(bone) mean(bone.angle), part, 'UniformOuput', false), data, 'UniformOutput', false)
You can do away with the first UniformOutput but not the second.

Kategorien

Mehr zu Structures 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!

Translated by