Mercurial > hg > may
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 |