Access Sub-fields of multiple different-named fields in struct
조회 수: 9(최근 30일)
표시 이전 댓글
I am trying to find an efficient way to grab data from lower-level fields of a struct. The top-level struct, s, has fields a, b, c, and each of those has different subfields, but they all share subfield x. Ideally, I would like to have a single line that would let me get a vector or cell of those values, something like:
>> out = s.([a,b,c]).x;
>> out = {'str1', 'str2', 'str3'}
So far, the best way I have come up with is:
out = cell(1,3);
f = fieldnames(s);
for i = 1:3
out{i} = s.(f{i}).x;
end
But it seems like there should be a better, ideally loop-free, way to do this. Any ideas?
댓글 수: 0
답변(2개)
Cel Kulasekaran
2022년 9월 30일
If you want to access a dynamic structure, s, it must evaluate to a single valid field name. I don't think there is much penalty in the loop here, do you have control of the construction of s? Perhaps re-consider that datastructure.
댓글 수: 0
참고 항목
범주
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!