How to collect data into a vector from this data structure?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Mr M.
el 29 de En. de 2018
Comentada: Stephen23
el 29 de En. de 2018
I have A.B(i,j).C(k).D(n).E.F, and i,j,k are fixed, but n runs from 1 to N. How to collect data into a vector? I know that it is possible to write a for cycle to do this, but are there any simpler solution in one line to do this? A.B(i,j).C(k).D(:).E.F not works for example.
0 comentarios
Respuesta aceptada
Cam Salzberger
el 29 de En. de 2018
You can make use of the ability to output a comma-separated list of values from a single-level structure array. In other words, if you make a structure array like so:
eg = struct('field', {1 2 3})
Then you can do this:
>> eg.field
ans =
1
ans =
2
ans =
3
Which means you can put that together into a vector with square brackets:
>> [eg.field]
ans =
1 2 3
Now, since you have a nested structure, you just have to take the intermediate step of making a structure array first, then make a numeric array from that structure array.
Example structure:
for n = 1:10
A.B(1,1).C(1).D(n).E.F = n;
end
Extraction:
S = [A.B(1,1).C(1).D(:).E]; % Structure array
V = [S(:).F]; % Numeric array
You can change out the fixed indices as you need.
-Cam
1 comentario
Stephen23
el 29 de En. de 2018
Read about this in the MATLAB documentation:
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!