{
//http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/correlate/
int i,j,delay;
double mx,my,sx,sy,sxy,denom,r,prev_r;
/\* Calculate the mean of the two series x\[\], y\[\] \*/
mx = 0;
my = 0;
for (i=0;i<n;i++) {
mx \+= x\[i\];
my \+= y\[i\];
}
mx /= n;//lasketaan keskiarvot
my /= n;
/\* Calculate the denominator \*/
sx = 0;
sy = 0;
for (i=0;i<n;i++)
{
sx \+= (x\[i\] - mx) * (x\[i\] - mx);
sy \+= (y\[i\] - my) * (y\[i\] - my);
}
denom = sqrt(sx*sy);
r=0;
\ *calcdelay=0;
prev_r=0;
/\* Calculate the correlation series \*/
for (delay=-maxdelay;delay<maxdelay;delay++)
{
sxy = 0;
for (i=0;i<n;i++) {
j = i + delay;
if (j < 0 \|\| j >= n)
continue;
else
else
sxy \+= (x\[i\] - mx) * (y\[j\] - my);
// Or should it be \(?)
/* if (j < 0 \|\| j >= n)
sxy \+= (x\[i\] - mx) * (-my);
else
else
sxy \+= (x\[i\] - mx) * (y\[j\] - my);
\*/
}
r = sxy / denom;
if(r>prev_r)
{
{
prev_r=r;
\ *calcdelay=delay;
}
/\* r is the correlation coefficient at "delay" \*/
}
return prev_r;
}
|