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