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

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.

 採用された回答

Cam Salzberger
Cam Salzberger 2018 年 1 月 29 日

2 投票

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeTables についてさらに検索

質問済み:

2018 年 1 月 29 日

コメント済み:

2018 年 1 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by