Mercurial > hg > may
changeset 37:d239bdcdb541
Add fftshift
author | Chris Cannam |
---|---|
date | Sun, 23 Dec 2012 09:21:59 +0000 |
parents | fa49869bda51 |
children | 977c9700a7a5 |
files | blockfuncs.yeti test/test_blockfuncs.yeti |
diffstat | 2 files changed, 30 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/blockfuncs.yeti Sat Dec 22 11:19:46 2012 +0000 +++ b/blockfuncs.yeti Sun Dec 23 09:21:59 2012 +0000 @@ -21,21 +21,33 @@ for [0..len-1] do i: v[i] := v1[i] * v2[i] done; b.block v); -sqr b = - multiply b b; +sqr bl = + multiply bl bl; + +rms = + sqrt . mean . sqr; sqrt' = b.fromList . (map sqrt) . b.list; -rms = - sqrt . mean . sqr; +fftshift bl = + (len = b.length bl; + half = int(len/2 + 0.5); // round up for odd-length sequences + b.concat [b.rangeOf bl half (len-half), b.rangeOf bl 0 half]); + +ifftshift bl = + (len = b.length bl; + half = int(len/2); // round down for odd-length sequences + b.concat [b.rangeOf bl half (len-half), b.rangeOf bl 0 half]); { sum = sum', mean, multiply, sqr, sqrt = sqrt', -rms +rms, +fftshift, +ifftshift, }
--- a/test/test_blockfuncs.yeti Sat Dec 22 11:19:46 2012 +0000 +++ b/test/test_blockfuncs.yeti Sun Dec 23 09:21:59 2012 +0000 @@ -4,7 +4,7 @@ stdSqrt = sqrt; { zeros, consts, ones, fromList, list } = load block; -{ sum, mean, multiply, sqr, sqrt, rms } = load blockfuncs; +{ sum, mean, multiply, sqr, sqrt, rms, fftshift, ifftshift } = load blockfuncs; { declare, compare } = load test.test; declare [ @@ -46,5 +46,17 @@ compare ((rms . fromList) [-1,2,2]) (stdSqrt 3) ), +"fftshift": \( + compare ((list . fftshift . zeros) 0) [] and + compare ((list . fftshift . fromList) [1,2,3,4]) [3,4,1,2] and + compare ((list . fftshift . fromList) [1,2,3,4,5]) [4,5,1,2,3] +), + +"ifftshift": \( + compare ((list . ifftshift . zeros) 0) [] and + compare ((list . ifftshift . fromList) [3,4,1,2]) [1,2,3,4] and + compare ((list . ifftshift . fromList) [4,5,1,2,3]) [1,2,3,4,5] +), + ];