MATLAB: Looping within a structure

loopMATLABstructstructures

Hello everyone,
Sorry if this question was already asked, but I couldnt find something that worked for me. I have the following Matlab struct
mystruct
point1 : struct
point2 : struct
.
.
.
.
pointN : struct
Basically a structure containing point coordinates,
what I wish to do is basically fetch the data of the structure in a loop. Unfortunately I wasnt able to achieve this. What I created was
for i = 1:N
varName = strcat('mystruct.point',int2str(i));
%fetch data using the varname
end
Basically this is a snippet out of a bigger codeflow which I have simplified for the sake of my question.
Regards,
Sanjay

Best Answer

You can easily loop over the fieldnames:
F = fieldnames(mystruct);
for k = 1:numel(F)
A = mystruct.(F{k});
... do whatever with A
end
or use numbers to generate the fieldnames:
for k = 1:N
F = sprintf('point%d',k);
A = mystruct.(F);
... do whatever with A
end
Note that your code would be simpler and more efficient if you used a non-scalar structure (or even a cell array), rather than accessing lots of fieldnames dynamically: