Return field in struct whose field name contains a string

120 visualizaciones (últimos 30 días)
Cody Brown
Cody Brown el 13 de Abr. de 2021
Respondida: Cris LaPierre el 13 de Abr. de 2021
i have a struct like the following:
Struct.Data.FieldOne %1000x2 double
Struct.Data.FieldTwo %1000x2 double
Struct.Data.FieldThree %1000x2 double
I want to return the field that contains a string, like the following:
Two = find(Struct.Data, 'Two'); %I don't know what this function would be
that is equevelent to:
Two = Struct.Data.FieldTwo;

Respuestas (1)

Cris LaPierre
Cris LaPierre el 13 de Abr. de 2021
One way is to use the functions fieldnames and contains.
Struct.Data.FieldOne =1;%1000x2 double
Struct.Data.FieldTwo =2;%1000x2 double
Struct.Data.FieldThree =3;%1000x2 double
% get field names
nm = fieldnames(Struct.Data)
nm = 3×1 cell array
{'FieldOne' } {'FieldTwo' } {'FieldThree'}
% find which field contains the search string
ind = contains(nm,'Two')
ind = 3×1 logical array
0 1 0
% Dynamically extract the data
two = Struct.Data.(nm{ind})
two = 2
Note that this approach will only work when there is a single match.

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