Eu tenho um sinal que eu amostro a 500khz. Estou tentando detectar um aumento, queda e o pico nos dados recebidos. A base do pico pode ser de 250 usec ou 2,5 ms, a amplitude pode estar 6db ou 15db acima do nível de ruído. Infelizmente não tenho um bom snr. O nível CC do sinal não é constante, mas se move muito mais devagar que o componente CA.
No ponto de decisão, preciso conhecer a inclinação da ascensão e queda. Este é um sistema difícil em tempo real e eu realmente preciso tomar uma decisão nos 100usec após a inclinação descer até o nível dc.
Estou procurando sugestões de como implementar com eficiência um algoritmo decente.
Atualmente, faço uma média contínua (últimos 25 pontos de dados somados) e tento detectar a tendência. Depois de detectar a tendência para cima, começo a procurar uma tendência para baixo e, uma vez que faço isso, coleto talvez outras 50 amostras e começo a calcular.
O ruído agora estraga facilmente esse algoritmo, daí a questão.
Atualizar
Para o benefício de outros, acabei implementando uma Média Móvel seguida pelo integrador. A média móvel dos 64 dados anteriores suavizou o suficiente, mas perdeu a ascensão em um grau, integrando os últimos 8 valores recuperados e simplesmente busco ascensão e queda, depois fiz uma regressão linear para a inclinação. Funciona ok, não ótimo, mas ok.