Mercurial > hg > may
changeset 439:8140577bb74e
Calculate kaiser window in two halves (faster)
author | Chris Cannam |
---|---|
date | Wed, 16 Oct 2013 09:43:03 +0100 |
parents | fd89f45b2ade |
children | 76d41e53fad2 |
files | src/may/signal/window.yeti |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/may/signal/window.yeti Tue Oct 08 15:38:11 2013 +0100 +++ b/src/may/signal/window.yeti Wed Oct 16 09:43:03 2013 +0100 @@ -111,12 +111,16 @@ (ipow (x/2) (i*2)) / (f * f); done [1..terms]); denominator = bes0 beta; - kw = vec.fromList - (map do i: + even = (length % 2 == 0); + halflen = if even then length/2 else (length+1)/2 fi; + half = + map do i: k = 2*i / (length-1) - 1; bes0 (beta * sqrt (1 - k*k)) / denominator; - done [0..length-1]); - kw); + done [0..halflen-1]; + vec.fromList + (half ++ + if even then reverse half else drop 1 (reverse half) fi)); kaisers = [:];