How to find minimum from a group and index at which minimum value is obtained ?

1 visualización (últimos 30 días)
Hello all,
I have a matrix Engine_data_temp whose 5th column contains values of time (eg: 1;1;1;2;2...600) and 10th column contains values of fuel consumption. I am currently using code shown below to find unique value of time and minimum value of fuel consumed at that time:
(As suggested my one of the community member)
[uniqueT,~,jk]=unique(Engine_data_temp(:,5));
minFc=accumarray(jk,Engine_data_temp(:,10),[],@min);
I also need to find the index at which min values of fuel consumption are being selected at each unique time instances because I need this index to access other columns in matrix Engine_data_temp.
Thank you!
  1 comentario
Dhaval Lodaya
Dhaval Lodaya el 3 de Jul. de 2016
I am looking for a method which does not use for loop for this as it slows down my code. I need to obtain index by vectorization or any other method that is fast.
Thanks in advance!

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 3 de Jul. de 2016
Create a small function
function r = min_and_idx(x)
[minx, minidx] = min(x);
r = {minx, minidx};
Then you use
minFc = accumarray(jk, Engine_data_temp(:,10), [], @min_and_idx, {});
The result will be a cell array in which some entries might be empty, but if they are not empty then they will be a cell with minimum value and the index of the value relative to the locations that share the same jk value.
  3 comentarios
Walter Roberson
Walter Roberson el 4 de Jul. de 2016
function r = min_and_idx(x)
[minx, minidx] = min(x);
r = {[minx, minidx]};
Dhaval Lodaya
Dhaval Lodaya el 4 de Jul. de 2016
Editada: Dhaval Lodaya el 4 de Jul. de 2016
Thanks a lot! This works perfectly fine now and I liked the cell approach.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Entering Commands en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by