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

1 回表示 (過去 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 件のコメント
Walter Roberson
Walter Roberson 2016 年 7 月 4 日
function r = min_and_idx(x)
[minx, minidx] = min(x);
r = {[minx, minidx]};
Dhaval Lodaya
Dhaval Lodaya 2016 年 7 月 4 日
編集済み: Dhaval Lodaya 2016 年 7 月 4 日
Thanks a lot! This works perfectly fine now and I liked the cell approach.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEntering Commands についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by