2

I have multiple (between 2 and 100) signals and need to determine when a significant number diverge from the rest. We're exploring machine learning techniques, but we also want tackle this as a signal processing problem and see where we get the best results.

This very informative post suggests that best results come from a weighted ensemble of techniques, including:

  • Similarity in time domain (static): Multiply in place and sum.
  • Similarity in time domain (with shift*): Take FFT of each signal, multiply, and IFFT. (matlab's xcorr)
  • Similarity in frequency domain (static**): Take FFT of each signal, multiply, and sum.
  • Similarity in frequency domain (with shift*): Multiply the two signals and take FFT. This will show if the signals share similar spectral shapes.
  • Similarity in energy (or power if different lengths)

But this is a fairly high-level outline. Can anyone point me to a more thorough discussion of these techniques, preferably with some python code or in lieu of that, some code in R?

petezurich
  • 9,280
  • 9
  • 43
  • 57
John Strong
  • 1,844
  • 1
  • 15
  • 24
  • 1
    Look at sci-py. Signal processing: https://docs.scipy.org/doc/scipy/reference/signal.html Fourier transforms: https://docs.scipy.org/doc/scipy/reference/tutorial/fftpack.html. I think what you compare depends on the business case. Think about what "far from the rest" should mean in the context of the problem that you're trying to solve. – Neil Jan 20 '19 at 17:12
  • 1
    Also consider whether this question is better suited for https://dsp.stackexchange.com/ – NPE Jan 20 '19 at 17:19
  • Shouldn't correlation function tackle this? – Colonder Jan 20 '19 at 17:53
  • The cross-correlation function is one of the tools, but what grabbed my attention in the post I linked to which suggested that one use a weighted ensemble of several techniques. – John Strong Jan 21 '19 at 02:54

0 Answers0