how to concatenate structure fields
Mostrar comentarios más antiguos
Hello I have a structure s(i).f(j).d where i=1:40 and j=1:10.I want to concantenate all the fields in to one single matrix. for eg
for j=1:10
m(:,j)=s(1).f(j).d
with the following code above
this concatenates 10 column matrix into m .But this is just for s(1) how to proceed for s1..s2...s40 for all the 40 fields?
Respuesta aceptada
Más respuestas (1)
Guillaume
el 15 de Jul. de 2016
Use a double for loop, then:
m = zeros(numel(s(1).f(1).d), numel(s(1).f(1)), numel(s)); %preallocation is advised
for sidx = 1:numel(s)
for fidx = 1:numel(s(sidx).f)
m(:, fidx, sidx) = s(sidx).f(fidx).d;
end
end
Note that I've concatenated the s1, ... s40 along the 3rd dimension. You didn't specify what you wanted exactly.
2 comentarios
Guillaume
el 15 de Jul. de 2016
Whichever shape you want for the output, the idea is still the same. Iterate over both arrays. To get the above:
m = zeros(numel(s(1).f(1).d, numel(s) * numel(s(1).f));
col = 1;
for sidx = 1 : numel(s)
for fidx = 1 : numel(f)
m(:, col) = s(sidx).f(idx).d;
col = col + 1;
end
end
Categorías
Más información sobre Structures en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
