Mercurial > hg > may
diff yetilab/transform/fft.yeti @ 213:d841bfc143dd matrix_opaque_immutable
Update complex, fft
author | Chris Cannam |
---|---|
date | Sat, 11 May 2013 11:27:34 +0100 |
parents | d0abc9afe608 |
children | ddc8fa794880 |
line wrap: on
line diff
--- a/yetilab/transform/fft.yeti Sat May 11 11:19:48 2013 +0100 +++ b/yetilab/transform/fft.yeti Sat May 11 11:27:34 2013 +0100 @@ -3,12 +3,13 @@ import edu.emory.mathcs.jtransforms.fft: DoubleFFT_1D; -b = load yetilab.block.block; -vec = load yetilab.block.fvector; +vec = load yetilab.block.vector; complex = load yetilab.block.complex; -packedToComplex p = - (n = (vec.length p) / 2; +load yetilab.block.complextype; + +packedToComplex len p is number -> ~double[] -> array<cplx> = + (n = len / 2; array (map do i: re = if i == n then p[1] else p[i*2] fi; @@ -18,24 +19,23 @@ complexToPacked arr = (n = length arr; - v = vec.vector - (map do i: + v = (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]); + done [0..(n-1)*2-1]) as ~double[]; v[1] := complex.real arr[n-1]; v); realForward n = (d = new DoubleFFT_1D(n); do bl: - v = b.vector bl; + v = vec.primitive bl; d#realForward(v); - packedToComplex v; + packedToComplex (vec.length bl) v; done); realInverse n = @@ -43,7 +43,7 @@ do arr: v = complexToPacked arr; d#realInverse(v, true); - b.block v; + vec.vector v; done); {