How to extract a field from a structure?

159 visualizaciones (últimos 30 días)
sarah wentzel
sarah wentzel el 5 de Abr. de 2022
Comentada: RST el 3 de Ag. de 2023
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!

Respuesta aceptada

Voss
Voss el 5 de Abr. de 2022
% 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 comentarios
Voss
Voss el 3 de Ag. de 2023
@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"

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by