Como posso encontrar o máximo ou o mínimo de uma matriz multidimensional no MATLAB? [duplicado
-
26-09-2019 - |
Pergunta
Esta pergunta já tem uma resposta aqui:
- Índice de valor máximo e min em uma matriz 3 respostas
Eu tenho uma matriz 4D de medições no Matlab. Cada dimensão representa um parâmetro diferente para a medição. Quero encontrar o valor máximo e mínimo e o índice (ou seja, qual parâmetro) de cada um.
Qual é a melhor maneira de fazer isso? Eu acho que posso pegar o máximo do máximo do máximo em cada dimensão, mas isso parece um kludge.
Solução
Exemplo 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 o mínimo é deixado como um exercício :).
Após um comentário: Se você não conhece o número de dimensões da sua matriz e, portanto, não pode escrever o "[i,j,k,l] =
"Parte, use este truque:
indices = cell(1,length(size(A)));
[indices{:}] = ind2sub(size(A),position);
Outras dicas
Para uma matriz bidimensional, digamos que você possa usar a função Min /Max duas vezes. n vezes para a matriz dimensional n. por exemplo: a=[2 3 4; 5 6 7; -2 7 87; 911 7 34];
for minimum: min(min(a,[],1))
-> the answer will be -2.
Você também pode colocar o parâmetro de dimensão em min/max a 2. Como isso chama a função duas vezes, segunda vez no vetor de elemento mínimo/máximo da dimensão que você escolhe.
Da mesma forma, você pode fazer (max(max(a,[],1))
Para descobrir o máximo.