Como detectar alterações "rápidas" no processamento de sinais


12

Estou trabalhando em um projeto em que medimos a soldabilidade dos componentes. O sinal medido é barulhento. Precisamos processar o sinal em tempo real para que possamos reconhecer a mudança que começa no momento de 5000 milissegundos.

Meu sistema coleta amostras do valor real a cada 10 milissegundos - mas pode ser ajustado para amostras mais lentas.

  1. Como posso detectar essa queda em 5000 milissegundos?
  2. O que você acha da relação sinal / ruído? Devemos nos concentrar e tentar obter um sinal melhor?
  3. Há um problema em que cada medida tem resultados diferentes e, às vezes, a queda é ainda menor que este exemplo.

Sinal de amostra Sinal de amostra 2 Sinal de amostra 3

Link para arquivos de dados (eles não são iguais aos usados ​​para plotagens, mas mostram o status mais recente do sistema)

  1. https://docs.google.com/open?id=0B3wRYK5WB4afV0NEMlZNRHJzVkk
  2. https://docs.google.com/open?id=0B3wRYK5WB4afZ3lIVzhubl9iV0E
  3. https://docs.google.com/open?id=0B3wRYK5WB4afUktnMmxfNHJsQmc
  4. https://docs.google.com/open?id=0B3wRYK5WB4afRmxVYjItQ09PbE0
  5. https://docs.google.com/open?id=0B3wRYK5WB4afU3RhYUxBQzNzVDQ

5
Você parece ter uma relação sinal / ruído relativamente pequena. Como na maioria dos problemas de detecção, você deve considerar o equilíbrio entre a probabilidade de detectar corretamente o recurso que você indicou e a probabilidade de declarar falsamente que um existe. O que é mais importante para a sua aplicação? Você tem algum requisito de latência de detecção?
Jason R

2
O 'ruído' parece mais uma interferência em uma frequência específica. Se esse for o caso (uma plotagem de espectro ajudará), a filtragem apropriada fará a maior parte do trabalho.
Juancho

Na verdade, a detecção desse recurso é muito importante. Mas posso viver com alguma latência, mas preciso ajustar a posição final de parada, pois não sei exatamente onde a peça toca a solda e preciso controlar a profundidade de imersão. Por exemplo, se sei que a imersão deve ser de 0,5 mm, calculo a posição teórica de acordo com o tamanho ideal do glóbulo de solda, mas preciso fazer a correção para o tamanho real de um glóbulo que detecto por toque - ele aparece como um mudança de força.
Petr

Toda a ferramenta de medição está localizada nas molas, para que possa se mover livremente, mas também produz ruído e também temos molas fixas para toda a gama de medições e, é claro, esses problemas aparecem ao usar a sensibilidade mais alta, onde as forças medidas são terrivelmente pequeno.
Petr

Juancho - talvez isso possa ajudar, mas como posso resolvê-lo para diferentes partes de peças, resultando em diferentes frequências? Além disso, esse componente muda quando a peça é imersa na solda, porque o processo de umedecimento está reduzindo o nível de ruído, mas isso acontece apenas em peças maiores; aqui é quase o mesmo quando entra ou sai.
Petr

Respostas:



4

Costumo enquadrar esse problema como um dos de detecção de inclinação. Se você calcular uma regressão linear sobre uma janela em movimento, a queda ilustrada será visível como uma mudança significativa no sinal de inclinação e / ou magnitude. Essa abordagem oferece vários fatores que exigirão "sintonia": por exemplo, a frequência de amostragem, o tamanho da janela etc. afetará a robustez (resistência ao ruído) do detector de sinais de inclinação. É aqui que alguns dos comentários acima podem ser aplicados. Qualquer filtragem ou supressão de ruído que possa ser aplicada antes do ajuste da linha melhorará seus resultados.


2

Eu fiz esse tipo de coisa calculando uma estatística T da média da parte esquerda dos dados versus a parte direita dos dados. Isso pressupõe que você saiba onde é o ponto de transição e, é claro, não.

Então, o que você faz é tentar várias centenas de pontos de partição ao longo do eixo do tempo e encontrar aquele com a estatística T mais significativa.

u_left, u_right : mean of left and right portion
s_left, s_right : SD of left and right portion
n_left, n_right : number of samples on left and right (subtract one from each for the one degree of freedom)

se = sqrt(s_left^2 / n_left^2 + s_right^2 / n_right^2)
T = (u_left - u_right) / se

Você pode fazer isso como algo como uma pesquisa binária. Tente 10 pontos de dados, encontre os dois maiores e tente 10 pontos entre esses etc. Dessa forma, você pode obter um ponto de transição bastante preciso. Não estou reivindicando precisão. :-)

Deixe-nos saber como vai!

PS Você pode calcular mean e sd como somas em execução, o que reduz a complexidade da computação dessa função de partição para todas as possibilidades, de N ^ 2 a N. Com isso, você provavelmente pode apenas calcular a estatística T em todos os pontos de partição possíveis.

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.