Finding element with max value in each row of a matrix

1 visualización (últimos 30 días)
How can I find the 4 elements with the largest values in each row of a matrix ? Moreover, I would like to know the exact position of them in each row.
i.e. A(2X8) = [ 1 2 3 4 8 5 2 9 ; 5 6 4 7 9 1 1 2; ]
For the above matrix the answer would be:
1st row max values elements: 4, 8, 5, 9
1st row position of these elements: 4, 5, 6, 8
2nd row max values elements: 5, 6, 7, 9
2nd row position of these elements: 1, 2, 4, 5
Any help could be useful.
Thanks in advance!

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 4 de Dic. de 2014
Editada: Azzi Abdelmalek el 4 de Dic. de 2014
a=[ 1 2 3 4 8 5 2 9 ; 5 6 4 7 9 1 1 2; ]
[ii,jj]=sort(a,2,'descend')
v=ii(:,1:4)
idx=jj(:,1:4)

Más respuestas (1)

Guillaume
Guillaume el 4 de Dic. de 2014
Editada: Guillaume el 4 de Dic. de 2014
sort your matrix by column and in descending order. The first argument returned are the max, the second their indices:
A = [1 2 3 4 8 5 2 9 ; 5 6 4 7 9 1 1 2]
[maxvals, maxindices] = sort(A, 2, 'descend');
maxvals = maxvals(:, 1:4)
maxindices = maxindices(:, 1:4)
  3 comentarios
Guillaume
Guillaume el 4 de Dic. de 2014
Yes, I forgot the colon initially. However, I corrected that mistake before you made the comment.
My answer is identical to Azzi's except mine got some explanation (and useful variable names).
Konstantinos
Konstantinos el 4 de Dic. de 2014
You are correct! thanks for your help!

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by