How to extract a field from a structure?

159 次查看(过去 30 天)
I want to extract an entire field from structures with multiple fields and store it in a vector:
vector = S.(sample)
only returns me row 1
vector = S(2).data
This would return me the second position but when I try to extract all the data
vector = S.data
or
vector = S(:).data
I still get only 24x250x50 double, and not all the data column.
Thank you!

采纳的回答

Voss
Voss 2022-4-5
% making a struct array with two fields:
S = struct('sample',num2cell(1:10),'info',sprintfc('information_%d',1:10))
S = 1×10 struct array with fields:
sample info
% get the 'sample' field from each element of S, put them in a vector:
vector = [S.sample]
vector = 1×10
1 2 3 4 5 6 7 8 9 10
% get the 'info' field from each element of S, put them in a cell array:
cell_array = {S.info}
cell_array = 1×10 cell array
{'information_1'} {'information_2'} {'information_3'} {'information_4'} {'information_5'} {'information_6'} {'information_7'} {'information_8'} {'information_9'} {'information_10'}
  3 个评论
Voss
Voss 2023-8-3
@RST: FYI, compose is the documented built-in function that operates similarly to sprintfc.
compose('information_%d',1:3)
ans = 1×3 cell array
{'information_1'} {'information_2'} {'information_3'}
It's also worth pointing out that string concatenation is convenient in some contexts.
"information_" + (1:3)
ans = 1×3 string array
"information_1" "information_2" "information_3"

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by