How to collect data into a vector from this data structure?

2 vues (au cours des 30 derniers jours)
Mr M.
Mr M. le 29 Jan 2018
Commenté : Stephen23 le 29 Jan 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.

Réponse acceptée

Cam Salzberger
Cam Salzberger le 29 Jan 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

Plus de réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by