Mercurial > hg > may
annotate yetilab/signal/autocorrelation.yeti @ 147:e16e42c55a20
Add autocorrelation
author | Chris Cannam |
---|---|
date | Sat, 27 Apr 2013 23:56:15 +0100 |
parents | |
children |
rev | line source |
---|---|
Chris@147 | 1 |
Chris@147 | 2 module yetilab.signal.autocorrelation; |
Chris@147 | 3 |
Chris@147 | 4 acf len series = |
Chris@147 | 5 (a = array series; |
Chris@147 | 6 map do i: |
Chris@147 | 7 sum (map do j: |
Chris@147 | 8 a[j] * a[j-i] |
Chris@147 | 9 done [i..length a - 1]) |
Chris@147 | 10 done [0..len-1]); |
Chris@147 | 11 |
Chris@147 | 12 acfNormalised len series = |
Chris@147 | 13 (n = length series; |
Chris@147 | 14 map2 do v i: v / (n - i) done (acf len series) [0..len-1]); |
Chris@147 | 15 |
Chris@147 | 16 acfUnityNormalised len series = |
Chris@147 | 17 (a = acfNormalised len series; |
Chris@147 | 18 max = head (sortBy (>) a); |
Chris@147 | 19 map (/ max) a); |
Chris@147 | 20 |
Chris@147 | 21 { |
Chris@147 | 22 acf, |
Chris@147 | 23 acfNormalised, |
Chris@147 | 24 acfUnityNormalised, |
Chris@147 | 25 } |
Chris@147 | 26 |