loop through a multi layered structure
19 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
采纳的回答
Guillaume
2014-8-13
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 个评论
Tiasa Ghosh
2018-1-16
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!
更多回答(2 个)
Guillaume
2014-8-13
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.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!