A biblioteca C para encontrar máximos locais?
Pergunta
Eu estou tentando escrever um aplicativo de análise de áudio, e eu preciso para identificar máximos locais em uma matriz 2D que representa um espectrograma. Eu já tenho uma biblioteca de código aberto que pode gerar o espectrograma usando Transformada Rápida de Fourier, mas eu queria saber se alguém sabia de qualquer boas bibliotecas para me ajudar com realmente encontrar os máximos? Eu não sou completamente certo o que procurar no Google por - o melhor que eu podia pensar era "biblioteca numérica", mas que não tem-me muito longe
.De preferência em C, mas estou aberto a outras sugestões.
Solução
Peak achado é um problema bastante geral. Ela já foi discutido, uma vez no modo de detecção de pico de sinal medido.
As respostas fornecidas incluem várias heurísticas viáveis.
É claro, eu prefiro minha própria resposta Se você precisar de rigor, mas ROOT é escrito em C ++, e é quase certamente muito pesado para a sua aplicação, então você vai precisar para retirar apenas o código que você quer ...
Outras dicas
A Biblioteca GNU Scientific apresenta um multidimensional minimização quadro , que pode ser feito para trabalhar para a maximização com bastante facilidade. Ele foi projetado para retornar apenas um único mínimo, em vez de um monte de mínimos diferente, no entanto.