Chris@147: Chris@147: module yetilab.signal.autocorrelation; Chris@147: Chris@147: acf len series = Chris@147: (a = array series; Chris@147: map do i: Chris@147: sum (map do j: Chris@147: a[j] * a[j-i] Chris@147: done [i..length a - 1]) Chris@147: done [0..len-1]); Chris@147: Chris@147: acfNormalised len series = Chris@147: (n = length series; Chris@147: map2 do v i: v / (n - i) done (acf len series) [0..len-1]); Chris@147: Chris@147: acfUnityNormalised len series = Chris@147: (a = acfNormalised len series; Chris@147: max = head (sortBy (>) a); Chris@147: map (/ max) a); Chris@147: Chris@147: { Chris@147: acf, Chris@147: acfNormalised, Chris@147: acfUnityNormalised, Chris@147: } Chris@147: