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

47 vues (au cours des 30 derniers jours)
SUNANNA S S
SUNANNA S S le 18 Avr 2017
Commenté : Bryan Chambers le 19 Fév 2020
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.

Réponses (3)

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

KSSV
KSSV le 18 Avr 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 le 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 commentaires
Stephen23
Stephen23 le 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
Bryan Chambers
Bryan Chambers le 19 Fév 2020
Nice Stephen!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Signal Generation and Preprocessing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by