min MAX of several variables

13 views (last 30 days)
francesco
francesco on 4 Dec 2013
Edited: dpb on 4 Dec 2013
is it possible to calculate in only one function, the min or MAX value for several variables? as for:
zal1, zal2, zal3, agg1, zgg2, zgg3 (are matrices nxn)
%
the bruteforce solution:
%
max(zal1,zal2);
max(ans,zal3);
max(ans,zgg1);
max(ans,zgg2);
maxz=max(max(max(ans,zgg3)))
%
min(zal1,zal2);
min(ans,zal3);
min(ans,zgg1);
min(ans,zgg2);
minz=min(min(min(ans,zgg3)))
is there any lean solution?

Accepted Answer

dpb
dpb on 4 Dec 2013
Edited: dpb on 4 Dec 2013
If same size,
tmp=[zal1, zal2, zal3, agg1, zgg2, zgg3 ];
maxz=max(tmp(:));
minz=min(tmp(:));
Unfortunate can't use the (:) after the concatenation to avoid the temporary although since there are two operations it saves building twice as I doubt that the optimizer would figure out the optimization on its own.
ADDENDUM:
The whole problem illustrates why would be better, perhaps to rearrange the data structure to use cell arrays or named structures or higher dimension arrays instead of generating a series of sequentially-named variables. Then could eliminate the need to manipulate the separate variables explicitly.
ADDENDUM 2:
tmp=[zal1(:) zal2(:) zal3(:) agg1(:) zgg2(:) zgg3(:)];
gets the vector at the first go which may make a tiny speedup compared to above.

More Answers (0)

Categories

Find more on Get Started with Optimization Toolbox in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!