Mercurial > hg > may
diff yetilab/transform/fft.yeti @ 223:51af10e6cd0d
Merge from matrix_opaque_immutable branch
author | Chris Cannam |
---|---|
date | Sat, 11 May 2013 16:00:58 +0100 |
parents | 77c6a81c577f |
children | d7dd391a90fd |
line wrap: on
line diff
--- a/yetilab/transform/fft.yeti Tue May 07 21:43:10 2013 +0100 +++ b/yetilab/transform/fft.yeti Sat May 11 16:00:58 2013 +0100 @@ -3,12 +3,13 @@ import edu.emory.mathcs.jtransforms.fft: DoubleFFT_1D; -b = load yetilab.block.block; -vec = load yetilab.block.fvector; -complex = load yetilab.block.complex; +vec = load yetilab.vector.vector; +complex = load yetilab.vector.complex; -packedToComplex p = - (n = (vec.length p) / 2; +load yetilab.vector.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,25 @@ complexToPacked arr = (n = length arr; - v = vec.vector - (map do i: - ix = int (i/2); + v = new double[n*2-2]; + for [0..(n-1)*2-1] do i: + ix = int (i/2); + v[i] := if i == ix*2 then complex.real arr[ix] else complex.imaginary arr[ix] fi; - done [0..(n-1)*2-1]); + done; 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 +45,7 @@ do arr: v = complexToPacked arr; d#realInverse(v, true); - b.block v; + vec.vector v; done); {