Mercurial > hg > may
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, +} +