How to get an array of all field elements of a 1xN structure?

19 views (last 30 days)
Hi. I was not able to find an answer to my question, so I am asking it here. Is there a more direct way to get an array of all elements of a structure.field?
What I want is a direct one-liner which gives me the same as:
for ii = 1:length(Results)
Test(ii,1) = Results(ii).end_dates;
end
(Test is a 222x1 array)
something like:
Test = Results(:).end_dates
whereby this line somehow just gives me Results(1).end_dates, so just the first element of the field...
This is my structure: (a little bit small here, so also as an attachement)
  2 Comments
Matt
Matt on 14 Mar 2019
Hi Sebastian,
You can do something like this with the commands:
Test = {Results.mid_time}
if you want the results in a cell array, or
Test = [Results.mid_time]
if you want the results in a vector.
Results.mid_time gives you a comma separated list of the elements, and the brackets {} or [] concatenate them together into an array.
I hope this helps.
Matt
Sebastian
Sebastian on 14 Mar 2019
Edited: Sebastian on 2 Jul 2020
Yeah thank you very much!
Continually learning new stuff =)

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 14 Mar 2019
Edited: Adam Danz on 14 Mar 2019
If the values stored in .end_dates are scalars,
Test = [Results(:).end_dates]'; %Test will be column vector
If the values stored in .end_dates are row vectors of identical length,
Test = cell2mat({Results(:).end_dates}'); %Test will be matrix
If the values stored in .end_dates are column vectors of identical length,
Test = [Results(:).end_dates]; %Test will be a matrix
If the values stored in .end_dates are strings or matricies of uneqal size,
Test = {Results(:).end_dates}'; % Test will be a columnar cell array

More Answers (0)

Categories

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!