diff yetilab/signal/autocorrelation.yeti @ 147:e16e42c55a20

Add autocorrelation
author Chris Cannam
date Sat, 27 Apr 2013 23:56:15 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/yetilab/signal/autocorrelation.yeti	Sat Apr 27 23:56:15 2013 +0100
@@ -0,0 +1,26 @@
+
+module yetilab.signal.autocorrelation;
+
+acf len series =
+   (a = array series;
+    map do i:
+        sum (map do j:
+                 a[j] * a[j-i]
+                 done [i..length a - 1])
+        done [0..len-1]);
+
+acfNormalised len series =
+   (n = length series;
+    map2 do v i: v / (n - i) done (acf len series) [0..len-1]);
+
+acfUnityNormalised len series =
+   (a = acfNormalised len series;
+    max = head (sortBy (>) a);
+    map (/ max) a);
+
+{
+    acf,
+    acfNormalised,
+    acfUnityNormalised,
+}
+