annotate 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
rev   line source
Chris@41 1
Chris@41 2 module fft;
Chris@41 3
Chris@41 4 import edu.emory.mathcs.jtransforms.fft: DoubleFFT_1D;
Chris@41 5
Chris@41 6 b = load block;
Chris@42 7 vec = load fvector;
Chris@46 8 complex = load complex;
Chris@41 9
Chris@48 10 packedToComplex p =
Chris@46 11 (n = (vec.length p) / 2;
Chris@46 12 array
Chris@46 13 (map do i:
Chris@46 14 re = if i == n then p[1] else p[i*2] fi;
Chris@46 15 im = if i == 0 or i == n then 0 else p[i*2+1] fi;
Chris@46 16 complex.complex re im;
Chris@46 17 done [0..n]));
Chris@41 18
Chris@48 19 complexToPacked arr =
Chris@48 20 (n = length arr;
Chris@48 21 v = vec.vector
Chris@48 22 (map do i:
Chris@48 23 ix = int (i/2);
Chris@48 24 if i == ix*2 then
Chris@48 25 complex.real arr[ix]
Chris@48 26 else
Chris@48 27 complex.imaginary arr[ix]
Chris@48 28 fi;
Chris@48 29 done [0..(n-1)*2-1]);
Chris@48 30 v[1] := complex.real arr[n-1];
Chris@48 31 v);
Chris@48 32
Chris@48 33 realForward n =
Chris@41 34 (d = new DoubleFFT_1D(n);
Chris@41 35 do bl:
Chris@47 36 v = b.vector bl;
Chris@41 37 d#realForward(v);
Chris@48 38 packedToComplex v;
Chris@48 39 done);
Chris@48 40
Chris@48 41 realInverse n =
Chris@48 42 (d = new DoubleFFT_1D(n);
Chris@48 43 do arr:
Chris@48 44 v = complexToPacked arr;
Chris@48 45 d#realInverse(v, true);
Chris@48 46 b.block v;
Chris@41 47 done);
Chris@41 48
Chris@41 49 {
Chris@48 50 realForward,
Chris@48 51 realInverse,
Chris@41 52 }
Chris@41 53