Eu mesmo posso escrever algo encontrando cruzamentos zero da primeira derivada ou algo assim, mas parece uma função suficientemente comum para ser incluída nas bibliotecas padrão. Alguém conhece um?
Minha aplicação em particular é uma matriz 2D, mas geralmente seria usada para encontrar picos em FFTs, etc.
Especificamente, nesses tipos de problemas, existem vários picos fortes e, em seguida, muitos "picos" menores que são causados apenas por ruídos que devem ser ignorados. Estes são apenas exemplos; não meus dados reais:
Picos unidimensionais:
Picos bidimensionais:
O algoritmo de localização de pico encontraria a localização desses picos (não apenas seus valores) e, idealmente, encontraria o verdadeiro pico entre amostras, não apenas o índice com valor máximo, provavelmente usando interpolação quadrática ou algo assim.
Normalmente, você se preocupa apenas com alguns picos fortes, para que eles sejam escolhidos porque estão acima de um determinado limite ou porque são os primeiros n picos de uma lista ordenada, classificados por amplitude.
Como eu disse, sei escrever algo assim sozinho. Só estou perguntando se existe uma função ou pacote preexistente que funcione bem.
Atualizar:
I traduzido um script MATLAB e funciona decentemente para o caso 1-D, mas poderia ser melhor.
Atualização atualizada:
sixtenbe criou uma versão melhor para o gabinete 1-D.
find_peaks
, então adicionei esta resposta que pode ser útil para referência futura. (Eu tenho certeza que você já encontrou este desde 2009, mas é para outras pessoas + mim quando eu vou me fazer a pergunta novamente em alguns anos!)