How do I gain indices of max values in 2D matrix?

For a 16 x 12 matrix I should sort it in descending order to gain the max values (like 10 in total). After that, I should find what was the indices of those max values before sorting .
I tried several times with sort and find. But it doesn't give me correct result.

2 件のコメント

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 4 月 8 日
編集済み: Azzi Abdelmalek 2014 年 4 月 8 日
You have two columns, you have to precise how you want to sort them
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 4 月 8 日
You have a 16x12 matrix, there are several ways to sort your matrix, by rows or by columns? you have to give more details, or just show the result for a short example, if
A=[1 2;3 4;0 1;4 5 ;100 20;2 2;0 7]
What should be the result?

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

回答 (3 件)

Walter Roberson
Walter Roberson 2014 年 4 月 8 日

0 投票

[sorted, idx] = sort(YourMatrix, 'rows', 'descend');
tenmax = idx(1:10);

2 件のコメント

Klara
Klara 2014 年 4 月 8 日
Thanks but it gives me the indices of the max values, AFTER sorting!
Walter Roberson
Walter Roberson 2014 年 4 月 8 日
[sorted, idx] = sortrows(YourMatrix, -(1:size(YourMatrix,2)));
tenmax = idx(1:10);
this will give you the indices of the original rows that got sorted to the corresponding row position.

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

Gautam
Gautam 2014 年 4 月 10 日

0 投票

The answer above gives you the indices of before sorting. Try this example.
A = [1 4; 6 2; 4 2; 7 3]
[sortedMat,sortedIndex] = sort(A,'descend')
The sortedIndex matrix gives indices of the original rows (Note here that each column is sorted independently)
Jos (10584)
Jos (10584) 2014 年 4 月 10 日

0 投票

Why sort first?
A = [1 4; 6 2; 4 2; 7 3]
[maxValues, RowIndex] = max(A,[],1)
LinearIndex = sub2ind(size(A),RowIndex, 1:size(A,2))
sortedA = sort(A,1,'descend')

カテゴリ

ヘルプ センター および File ExchangeShifting and Sorting Matrices についてさらに検索

製品

質問済み:

2014 年 4 月 8 日

回答済み:

2014 年 4 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by