diff yetilab/transform/fft.yeti @ 92:77d3292bbf12

Reorganise files
author Chris Cannam
date Wed, 20 Mar 2013 09:57:54 +0000
parents fft.yeti@f97abcda094f
children d0abc9afe608
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/yetilab/transform/fft.yeti	Wed Mar 20 09:57:54 2013 +0000
@@ -0,0 +1,53 @@
+
+module fft;
+
+import edu.emory.mathcs.jtransforms.fft: DoubleFFT_1D;
+
+b = load block;
+vec = load fvector;
+complex = load complex;
+
+packedToComplex p =
+   (n = (vec.length p) / 2;
+    array
+       (map do i:
+            re = if i == n then p[1] else p[i*2] fi;
+            im = if i == 0 or i == n then 0 else p[i*2+1] fi;
+            complex.complex re im;
+        done [0..n]));
+
+complexToPacked arr =
+   (n = length arr;
+    v = vec.vector
+       (map do i:
+            ix = int (i/2);
+            if i == ix*2 then
+                complex.real arr[ix]
+            else 
+                complex.imaginary arr[ix] 
+            fi;
+            done [0..(n-1)*2-1]);
+    v[1] := complex.real arr[n-1];
+    v);
+
+realForward n = 
+   (d = new DoubleFFT_1D(n);
+    do bl:
+        v = b.vector bl;
+        d#realForward(v);
+        packedToComplex v;
+    done);
+
+realInverse n = 
+   (d = new DoubleFFT_1D(n);
+    do arr:
+        v = complexToPacked arr;
+        d#realInverse(v, true);
+        b.block v;
+    done);
+
+{
+realForward,
+realInverse,
+}
+