How to estimate the similarity between two signals?

3 vues (au cours des 30 derniers jours)
Masih
Masih le 4 Août 2011
I have many sine wave signals, which have different phase, amplitude,frequency and also affected by noise. There is a reference sine wave which is defined as ideal one.I really need to find the best noisy sine wave that have highest similarity to the reference sine wave. Could you help about the MATLAB program to come up related this problem?
  1 commentaire
Daniel Shub
Daniel Shub le 5 Août 2011
You need to define similarity. If one signal has a 10% difference in amplitude and another a 10% difference in frequency, which is more similar?

Connectez-vous pour commenter.

Réponses (3)

Desiree
Desiree le 5 Août 2011
Calculating the correlation coefficient might be a start. You can use corrcoef function for that. If the signal gets more complicated you might wanna look into other methods as well. Frequency analysis, spectral estimates but maybe also more simple statistics functions (f.ex. standard deviation) might help you there. Apart from basic MATLAB Statistics Toolbox and Signal Processing Toolbox might be of help here.

Image Analyst
Image Analyst le 5 Août 2011
You could try using the PSNR http://en.wikipedia.org/wiki/PSNR

Abbas Arghavani
Abbas Arghavani le 14 Jan 2017
Modifié(e) : Abbas Arghavani le 14 Jan 2017
I think it highly depends on the definition of similarity you are looking for. Sometimes you look for a signal (say s1) to help you to estimate another signal (say s0). Generally, I suggest cross-correlation to find the phase shift (lag) between all existing signals (si) and s0. When you find the lag, you easily can shift the signals and calculate the Pearson's correlation coefficient using coe_i = corrcoef(si, s0) function. The signal i with the biggest abs(coe_i) is the most simillar signal to s0.

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by