Índice do valor max e min em um array

Como posso encontrar o índice do elemento máximo em uma matriz sem loop?

Por exemplo, se eu tiver:

a = [1 2 999 3]; 

Eu quero definir uma function indexMax para que indexMax(a) retornaria 3 .

Da mesma forma para definir indexMin .

    Como apontado por Evgeni, max e min podem retornar argmax e argmin como segundo argumento.
    Vale a pena notar que você pode usar essas funções em dimensões específicas :

      A = rand(4); % 4x4 matrix [ row_max row_argmax ] = max( A, [], 2 ); % max for each row - 2nd dimension [ col_min col_argmin ] = min( A, [], 1 ); % min for each column - 1st dimension 

    Observe o segundo argumento vazio [] – é crucial max( A, [], 2 ) não é de todo equivalente a max( A, 2 ) (eu vou deixar para você como um pequeno exercício para ver o que max( A, 2 ) faz).

    O argmax / argmin retornado dessas chamadas “ao longo da dimensão” são índices row / col.

    A function max integrada possui essa funcionalidade quando dois argumentos de saída são especificados:

     a = [1 2 999 3]; [the_max, index_of_max] = max(a) the_max = 999 index_of_max = 3 

    Da mesma forma para min .

    Apenas como uma solução alternativa, você pode tentar isto:

     a = rand(1,1000); min_idx = find(a == min(a)); 

    Obviamente, o mesmo procedimento é aplicável no caso de max .

    Eu espero que isso ajude.