For loop with file number
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Isma_gp
el 6 de Sept. de 2018
I have a for loop as follows:
for ii=1:n_lines
g(ii,:) = data.file_1.maximum(ii,:);
end
I would like to include this for loop into an outer for loop that changes the file number from the structure i.e. file_1, file_2, file_3 etc.
Can I get some help here? Thanks
0 comentarios
Respuesta aceptada
Stephen23
el 6 de Sept. de 2018
Editada: Stephen23
el 6 de Sept. de 2018
for jj = 1:numberOfFields
fld = sprintf('file_%d',jj);
for ii = 1:n_lines
g(ii,:) = data.(fld).maximum(ii,:);
end
...
end
But this is a complex way to store and access your data. Accessing the fieldnames like this, and the required conversion from numeric to char, just makes your code more complex and slows down your code: a much simpler and more efficient way to design your data would be to use a non-scalar structure, then you can simply use indexing directly and efficiently:
for jj = 1:numberOfFields
for ii = 1:n_lines
g(ii,:) = data.file(jj).maximum(ii,:);
end
...
end
And probably avoiding using nested structures altogether would be a better way to design your data:
for jj = 1:numel(data)
data(jj).maximum
data(jj).file
data(jj).data
end
then you could simplify the code that accesses the data, by doing things like this:
g = vertcat(data.maximum)
and you will get all of the maximum matrices concatenated into one numeric array, without any loops or slow dynamic fieldnames. Better data design makes code simpler and more efficient.
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!