How can I get the min/max value of all fields in a stucture

I would like to obtain the minimum and maximum value in my structure which contains multiple fields.
structure_1.field_01
structure_1.field_02
structure_1.field_03
structure_1.field_04
I require something like-
min_val = min(struct.(:));
Is this possible using one function?
thanks in advance,
Marcus

1 Comment

What is in field_01? Is it a scalar, a n-d double array, something else? How about field_02? Is it the same class and size as field_01?

Sign in to comment.

 Accepted Answer

out = min(structfun(@(x)min(x(:)),structure_1));

3 Comments

+1 for structfun, I just gave basically the same answer with cellfun, but structfun is much better.
Just what I was looking for. Thanks.

Sign in to comment.

More Answers (1)

Assuming the contents of the fields are well behaved ...
structure_1.field_01 = rand(1, 1);
structure_1.field_02 = rand(1, 10);
structure_1.field_03 = rand(10, 1);
structure_1.field_04 = rand(10, 10);
structure_1.field_05 = rand(10, 10, 10);
min(cellfun(@(x)min(structure_1.(x)(:)), fieldnames(structure_1)))
By well behaved I mean min(structure_1.field_01(:)) needs to return a scalar double.

Categories

Tags

Community Treasure Hunt

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

Start Hunting!