Return field in struct whose field name contains a string

102 Ansichten (letzte 30 Tage)
Cody Brown
Cody Brown am 13 Apr. 2021
Beantwortet: Cris LaPierre am 13 Apr. 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;

Antworten (1)

Cris LaPierre
Cris LaPierre am 13 Apr. 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.

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by