Get exact indices of max value in 3D matrix

16 visualizaciones (últimos 30 días)
Hampus Alfredsson
Hampus Alfredsson el 14 de Mzo. de 2018
Comentada: Hampus Alfredsson el 14 de Mzo. de 2018
I have a 3D matrix like the one below:
A(:,:,1) = [30 31 32 33 34];
A(:,:,2) = [29 35 27 23 20];
I want to get the indices for the maximum value (which is 35). So i write:
[r,c,p] = find(A==max(max(A))), and get the following result:
r = 1, c = 7, p = 1
I want the answer to be:
r = 1, c = 2, p = 2...
How can I do this?
  1 comentario
Stephen23
Stephen23 el 14 de Mzo. de 2018
find does not return the page dimension, as you tried: the third output argument is actually the non-zero values themselves.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 14 de Mzo. de 2018
Editada: Stephen23 el 14 de Mzo. de 2018
Use ind2sub:
>> A(:,:,1) = [30 31 32 33 34];
>> A(:,:,2) = [29 35 27 23 20];
>> [mxv,idx] = max(A(:));
>> [r,c,p] = ind2sub(size(A),idx)
r = 1
c = 2
p = 2
Note that using the linear index idx to access the data may be more efficient.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices 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