Detecção e cálculo de declives e picos em tempo real


9

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.


Você pode postar um gráfico de uma sequência de dados em que seu algoritmo atual falha?
— Jim Clay

Fazer esse tipo de coisa apesar do ruído significativo é bastante difícil. A sugestão de Juancho de um diferenciador é provavelmente boa.
— Daniel R Hicks

Respostas:


5

Você deve começar com um diferenciador ilimitado de banda (equivalente a um diferenciador seguido por um filtro passa-baixo). O diferenciador removerá a tendência de baixa frequência e responderá fortemente a seus picos e inclinações. O componente passa-baixo remove o ruído além da frequência de corte.

Você deve projetar sua frequência de corte para obter pulsos limpos para suas inclinações.

As inclinações positivas diminuem à medida que pulsos positivos; inclinações negativas como pulsos negativos, e o pico corresponderá ao cruzamento zero entre positivo e negativo.

Esse tipo de filtro é normalmente implementado como um filtro FIR. O número de amostras para o seu filtro dependerá das restrições em tempo real, da nitidez na frequência de corte e da própria frequência de corte.


Eu não sou muito bem versado com DSP. Você pode me indicar uma possível implementação? Com base na sua resposta e no meu conhecimento limitado, acho que o link ( holoborodko.com/pavel/numerical-methods/numerical-derivative/… ) faz exatamente o que você mencionou. Se eu usasse essa abordagem, não sei 1) Como determinar minhas frequências? 2) Como selecionar coeficientes de filtro?
— Ktuncer

Além disso, o link a seguir resolve um problema semelhante e contém um bom grupo de links. dsprelated.com/showmessage/123740/1.php
— Ktuncer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.