min MAX of several variables

19 visualizaciones (últimos 30 días)
francesco
francesco el 4 de Dic. de 2013
Editada: dpb el 4 de Dic. de 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?

Respuesta aceptada

dpb
dpb el 4 de Dic. de 2013
Editada: dpb el 4 de Dic. de 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.

Más respuestas (0)

Categorías

Más información sobre Manual Performance Optimization en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by