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

Find more on MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!