how to get values from a struct

How to get values from a struct for a list of keys?
For example, I have a struct:
my_key={'key1', 'key2', 'key3'};
value = {[1 2], [3 4], [5 6]};
s=cell2struct(value,my_key,2);
How can I extract values for query={'key1','key3'}?
s.(query) does not work. I am trying to avoid loops.

 Accepted Answer

Stephen23
Stephen23 on 15 Jul 2017
Edited: Stephen23 on 15 Jul 2017
"How can I extract values for query={'key1','key3'}?"
cellfun(@(f)s.(f), query, 'uni',0)
or using getfield, something like:
getfield(s,{':'}, query{:}, {':'})

More Answers (1)

Try this:
my_key={'key1', 'key2', 'key3'}
value = {[1 2], [3 4], [5 6]}
s=struct(my_key{1}, value{1}, my_key{2}, value{2}, my_key{3}, value{3})
% Look to see if key2 is [3, 4]
if isequal(s.key2, [3,4])
msgbox('It is');
else
msgbox('It is not');
end

Categories

Asked:

on 14 Jul 2017

Edited:

on 15 Jul 2017

Community Treasure Hunt

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

Start Hunting!