Mercurial > hg > may
annotate yetilab/transform/window.yeti @ 107:041c7f4aec2e
Plotting experiments
author | Chris Cannam |
---|---|
date | Thu, 28 Mar 2013 21:37:29 +0000 |
parents | d0abc9afe608 |
children | 26111c11d8e4 |
rev | line source |
---|---|
Chris@38 | 1 |
Chris@93 | 2 module yetilab.transform.window; |
Chris@38 | 3 |
Chris@93 | 4 b = load yetilab.block.block; |
Chris@93 | 5 bf = load yetilab.block.blockfuncs; |
Chris@38 | 6 |
Chris@38 | 7 cosinewin a0 a1 a2 a3 n = |
Chris@38 | 8 b.fromList |
Chris@38 | 9 (map do i: |
Chris@38 | 10 a0 |
Chris@38 | 11 - a1 * cos(2 * pi * i / n) |
Chris@38 | 12 + a2 * cos(4 * pi * i / n) |
Chris@38 | 13 - a2 * cos(6 * pi * i / n) |
Chris@38 | 14 done [0..n-1]); |
Chris@38 | 15 |
Chris@38 | 16 hann = cosinewin 0.5 0.5 0.0 0.0; |
Chris@38 | 17 hamming = cosinewin 0.54 0.46 0.0 0.0; |
Chris@38 | 18 blackman = cosinewin 0.42 0.50 0.08 0.0; |
Chris@38 | 19 nuttall = cosinewin 0.3635819 0.4891775 0.1365995 0.0106411; |
Chris@38 | 20 blackmanHarris = cosinewin 0.35875 0.48829 0.14128 0.01168; |
Chris@38 | 21 boxcar = b.consts 0.5; |
Chris@38 | 22 |
Chris@38 | 23 bartlett n = |
Chris@38 | 24 b.fromList |
Chris@38 | 25 (m = n/2; |
Chris@38 | 26 concat [ |
Chris@38 | 27 map do i: |
Chris@38 | 28 i / m |
Chris@38 | 29 done [0..m-1], |
Chris@38 | 30 map do i: |
Chris@38 | 31 1.0 - (i / m) |
Chris@38 | 32 done [0..m-1] |
Chris@38 | 33 ]); |
Chris@38 | 34 |
Chris@49 | 35 windowed windowFunc frames = |
Chris@43 | 36 case frames of |
Chris@43 | 37 []: frames; |
Chris@43 | 38 _: (first = head frames; |
Chris@43 | 39 window = windowFunc (b.length first); |
Chris@43 | 40 map (bf.multiply window) frames); |
Chris@43 | 41 esac; |
Chris@43 | 42 |
Chris@38 | 43 { |
Chris@43 | 44 cosinewin, hann, hamming, blackman, nuttall, blackmanHarris, boxcar, bartlett, |
Chris@49 | 45 windowed |
Chris@38 | 46 }; |
Chris@38 | 47 |