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

4 次查看(过去 30 天)
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 个评论
Dhaval Lodaya
Dhaval Lodaya 2016-7-3
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!

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2016-7-3
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 个评论

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Entering Commands 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by