Looping within a structure

8 visualizaciones (últimos 30 días)
Sanjay Kamath Madhengal
Sanjay Kamath Madhengal el 9 de Ag. de 2019
Comentada: Sanjay Kamath Madhengal el 11 de Ag. de 2019
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

Respuesta aceptada

Stephen23
Stephen23 el 9 de Ag. de 2019
Editada: Stephen23 el 9 de Ag. de 2019
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:
  1 comentario
Sanjay Kamath Madhengal
Sanjay Kamath Madhengal el 11 de Ag. de 2019
Thanks, this really worked well for me. Accepting this as the answer :)

Iniciar sesión para comentar.

Más respuestas (1)

Neuropragmatist
Neuropragmatist el 9 de Ag. de 2019
What are the values stored in point1.struct?
Is your question about accessing fields of the table generally? If so you should look here:
If you are asking how to extract all of the data into one matrix you might be able to use struct2table without needing your loop at all:
Then it's pretty easy to extract whole columns of data.
M.

Categorías

Más información sobre Structures en Help Center y File Exchange.

Productos


Versión

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by