"Daniel Robbins" <email@example.com> wrote in message <firstname.lastname@example.org>... > Hi, > > I am trying to establish the best way to check the similarity of the pattern of change in two signals/vectors. For a simple example I generated four datasets. One positive parabolic curve, one equal negative curve, one smaller positive curve with a time lag and one vector with a fixed value e.g. [6 6 6 6 6 6 ...etc]. All vectors were the same lengths. > > My thinking is that I should use some sort of cross correlation e.g. > > [Rxy, Lag] = xcorr(data(:,4),data(:,3)); > plot(Lag,Rxy) > > By changing the two signals compared I note that the peak of the graph changes location. Therefore I could use the x axis values to calculate the lag in the signal. However I don't understand the values on the Y-axis. I also note that if I input the fixed value vector the graph becomes platykurtic, I'm not sure how to interpret this. > > Please can someone help me with the following queries: > > 1.) How do I interpret the Y-values of the graph?
If you standardize those columns of data, then the two autocorrelation functions will have unity peaks at zero lag.
Then you can compare the peak of the crosscorrelation function at zero lag with unity and how many lags it takes the function to decay to some fraction of the max.
> 2.) Is there some way of quantifying the level of agreement in the form of liner correlations e.g. from -1 to 1? Or via p-values?
Most likely. However, that probably isn't the best approach.
> 3.) Is this the best approach to analyse the pattern of change in two non linear signals or is there a better approach?
I would choose sqrt(mean((y1-y2).^2)), mean(abs(y1-y2)) or max(abs(y1-y2))