# Measuring Similarity of two Transient Signals

I am trying to measure the similarity between two signals, i.e. how identical they are. A complete overlap (two lines forming a single line) should give me a value of 1, the greater the distance, between the lines and the less similar the overall trend, the closer the value should go to 0.

I have tried measuring standard deviation $\sigma$ and different variants of correlation $r$ using MATLAB functions std(), xcorr() and corr2(). They did not do the trick, as ,e.g. $\sigma_{\phi_{A}}$ was $>$ than $\sigma_{\phi_{B}}$ (see figure below).

I was thinking about using some sort of weighted average between $\sigma$ and $r$. Another possibility would be to measure the difference between areas under the curves (but then different intersecting graphs could have the same area).

There are related questions to this, but they are either: (i) discussing the generic concept of similarity or (ii) suggest using xcorr() (different variants of which did not work for me).

-

One obvious thing to do would be to use the L2 distance between the two curves, and then transform it to get the range you want:

$distance(f_1,f_2)=\frac{1}{1+\|f_1-f_2\|_{L^2}}$

However, like you say, the issue of determining what you mean by 'similar' curves is not a simple problem. In fact, using the $L^2$ distance has issues in that it leads to very low 'prediction power' due to the curse of dimensionality.

Have a look at this paper (it is very readable) for some nice simple examples: http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.ssu

-
Thank you. The L2 norm seems to be working. It would have been nice to see some discussion of why other methods were not suitable. – A.L. Verminburger Jun 4 '13 at 13:49
I can't speak authoritatively about the particular things you tried, so won't try to (very interested to read an answer from someone who can!). As general comment though, they probably weren't suitable because they didn't match what you were imagining as describing 'similar' curves. I'd again suggest the paper I've linked to, it does a really nice job of explaining this. – thebigdog Jun 4 '13 at 23:17

Use Dynamic Time Warping if your signals are not too long. DTW is used in various fields like signature matching and speech recognition.