Accessing field names in struct

4 Ansichten (letzte 30 Tage)
Deepa Maheshvare
Deepa Maheshvare am 29 Jan. 2020
Kommentiert: Stephen23 am 23 Dez. 2022
I've the following struct
test = struct(...
'a',false,...
'b',false,...
'c',false,...
'd',false,...
'e',false,...
'f',false,...
'g',true...
);
How do get the field name that has a value true ?
Expected result:
g
Any suggestions?

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 29 Jan. 2020
F = fieldnames(test) ;
F(cell2mat(struct2cell(test)))

Weitere Antworten (1)

Stephen23
Stephen23 am 23 Dez. 2022
test = struct(...
'a',false,...
'b',false,...
'c',false,...
'd',false,...
'e',false,...
'f',false,...
'g',true...
);
F = fieldnames(test);
R = F{structfun(@(a)a,test)}
R = 'g'
  1 Kommentar
Stephen23
Stephen23 am 23 Dez. 2022
Timing tests:
test = struct(...
'a',false,...
'b',false,...
'c',false,...
'd',false,...
'e',false,...
'f',false,...
'g',true...
);
timeit(@()f1(test))
ans = 6.6802e-05
timeit(@()f2(test))
ans = 2.1892e-05
function f1(test)
F = fieldnames(test);
R = F(cell2mat(struct2cell(test)));
end
function f2(test)
F = fieldnames(test);
R = F{structfun(@(a)a,test)};
end

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by