How to get the index of maximum value in each row of a matrix?

49 views (last 30 days)
For eg, Matrix A=[1 2 3;2 0 0; 3 8 5 ]; The result I want to get is:
[p q]=1 3
2 1
3 2
I tried this
[p,q] = max(A,[],2);
but, it's not my desired output. Thanks in advance.

Answers (3)

Thorsten
Thorsten on 18 Apr 2017
[~, q] = max(A, [], 2) ;
p = (1:size(A, 1))';

KSSV
KSSV on 18 Apr 2017
A=[1 2 3;2 0 0; 3 8 5 ];
[val,idx] = max(A,[],2) ;
[~,j] = ind2sub(size(A(1,:)),idx) ;
i = [1:size(A,1)]' ;
[i j]
There would be more elegant solution than this.

Fahim MUMAND
Fahim MUMAND on 15 Oct 2019
What if
M =
7 8 8 2
1 8 1 7
9 4 10 4
10 7 1 10
7 10 1 1
and I want the indices of maximums (for example there are two in first row)?
  2 Comments
Stephen23
Stephen23 on 15 Oct 2019
>> V = max(M,[],2);
>> idx = M==V % logical indices
idx =
0 1 1 0
0 1 0 0
0 0 1 0
1 0 0 1
0 1 0 0
>> [row,col] = find(idx) % subscript indices
row =
4
1
2
5
1
3
4
col =
1
2
2
2
3
3
4

Sign in to comment.

Categories

Find more on Signal Generation and Preprocessing in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!