Finding min values in structure array

14 views (last 30 days)
Below is my current structure array, and I would like to be able to search the structure and find the minimum age.
field1='relation';
value1={'spouse', 'son', 'son', 'daughter', 'daughter'};
field2='name';
value2={'Rebekah', 'Caleb', 'Isaac', 'Faith', 'Annabel'};
field3='state';
value3={'OH', 'VA', 'VA', 'VA', 'VA'};
field4='age';
value4={'29','7','6','4','2'};
s = struct(field1,value1,field2,value2,field3,value3,field4,value4);
  2 Comments
per isakson
per isakson on 10 Oct 2017
Edited: per isakson on 10 Oct 2017
Are the values of age a mistake? They are character strings,
value4={'29','7','6','4','2'};
I replaced the assignment by
value4={29,7,6,4,2};
Then finding min is simple
>> [s.age]
ans =
29 7 6 4 2
>> [val,ix] = min([s.age])
val =
2
ix =
5
>>
BlkHoleSun
BlkHoleSun on 10 Oct 2017
yes, it was a mistake. thank you. [val,ix] = min([s.age]); s(ix) now I get all the info from the min age. Thanks again!

Sign in to comment.

Accepted Answer

BlkHoleSun
BlkHoleSun on 21 Oct 2017
[s.age] ans = 29 7 6 4 2 >> [val,ix] = min([s.age]) val = 2 ix = 5

More Answers (2)

Nicolas Schmit
Nicolas Schmit on 10 Oct 2017
First, convert the age data from string to numeric, and concatenate it into an array.
ageArray = arrayfun(@(x) str2double(x.age), s);
Now, find the index of the minimum age.
[~, iAgeMin] = min(ageArray);

Jan
Jan on 10 Oct 2017
This struct is impractical for searching, as well as it is to search for a minimum in values stored as strings. But it works:
num = str2double({s.age});
minValue = min(num);

Categories

Find more on Data Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!