Mercurial > hg > may
annotate yetilab/transform/window.yeti @ 242:0ac8672d12b2 sparse
Add and test sparsity
author | Chris Cannam |
---|---|
date | Mon, 20 May 2013 16:22:17 +0100 |
parents | 77c6a81c577f |
children | 9b07a28aefad |
rev | line source |
---|---|
Chris@38 | 1 |
Chris@93 | 2 module yetilab.transform.window; |
Chris@38 | 3 |
Chris@222 | 4 vec = load yetilab.vector.vector; |
Chris@222 | 5 bf = load yetilab.vector.blockfuncs; |
Chris@38 | 6 |
Chris@38 | 7 cosinewin a0 a1 a2 a3 n = |
Chris@218 | 8 vec.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@218 | 21 boxcar = vec.consts 0.5; |
Chris@38 | 22 |
Chris@38 | 23 bartlett n = |
Chris@218 | 24 vec.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@218 | 39 window = windowFunc (vec.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 |