Pergunta

Esta pergunta já tem uma resposta aqui:

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top