MATLAB Answers

How to index every field of a structure and reassign to a structure with a single element in each field

91 views (last 30 days)
John Petersen
John Petersen on 10 Mar 2017
Answered: Chad Greene on 18 Jul 2019
I have a structure where every field is an array of the same length. I need to pass this structure on but only with a single element in each field. I thought of doing it this way
A.b = [1:10];
A.c = [2:11];
A.d = [3:12];
a = structfun(@(x) x(1),A)
but this results in
a = [1;2;3];
The answer I want for the first element is
a.b = 1;
a.c = 2;
a.d = 3;
I will want to run this in a for loop for use in the next function like this
for ii = 1:length(A.b)
a = structfun(@(x) x(ii),A); % but modified so that 'a' is a struct like 'A', not an array.

More Answers (1)

Chad Greene
Chad Greene on 18 Jul 2019
Alternatively, you could stick with the approach you were using, but include the 'uniformoutput',false option.
a = structfun(@(x) x(1),A,'Uni',false)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!