2010-04-14 64 views
10

Tengo una matriz 4D de mediciones en MATLAB. Cada dimensión representa un parámetro diferente para la medición. Quiero encontrar el valor máximo y mínimo y el índice (es decir, qué parámetro) de cada uno.¿Cómo puedo encontrar el máximo o el mínimo de una matriz multidimensional en MATLAB?

¿Cuál es la mejor manera de hacerlo? Me imagino que puedo tomar el máximo del máximo del máximo en cada dimensión, pero eso parece un error.

+0

Aunque la pregunta explícita se responde en el mensaje engañado, todas las respuestas aquí responden a la pregunta en el título. Estos son dos escenarios muy distintos y no estoy de acuerdo con la bandera duplicada. – excaza

Respuesta

34

Ejemplo rápido:

%# random 4 d array with different size in each dim 
A = rand([3,3,3,5]); 

%# finds the max of A and its position, when A is viewed as a 1D array 
[max_val, position] = max(A(:)); 

%#transform the index in the 1D view to 4 indices, given the size of A 
[i,j,k,l] = ind2sub(size(A),position); 

Encontrar el mínimo se deja como ejercicio :).

raíz de una observación: Si usted no sabe el número de dimensiones de la matriz A y no puede, por tanto, escribir la parte "[i,j,k,l] =", utiliza este truco:

indices = cell(1,length(size(A))); 

[indices{:}] = ind2sub(size(A),position); 
+0

Este es el camino de Matlab. Si quiere encontrar el máximo absoluto, use 'max (abs (A (:))' y multiplique con 'sign (A (position))' en caso de que esté interesado en el signo. – Jonas

+0

Buena solución que lo hace en el camino de Matlab sin ningún bucle. – martiert

+0

¿Puede obtener un índice de posición máximo como vector si no conoce las dimensiones de A? En una función, por ejemplo. – yuk

0

de matriz bidimensional, decir que puede simplemente usar la función min/max dos veces. n veces para la matriz n dimensional. por ejemplo: a=[2 3 4; 5 6 7; -2 7 87; 911 7 34];

for minimum: min(min(a,[],1)) 
      -> the answer will be -2. 

se puede poner el parámetro dimensión en min/max a 2 también. ya que esto llama a la función dos veces, la segunda vez al vector de elemento mínimo/máximo de la dimensión que elija.

del mismo modo, puede hacer (max(max(a,[],1)) para averiguar el máximo.

Cuestiones relacionadas