diff options
author | Johnathan Corgan <jcorgan@corganenterprises.com> | 2009-10-29 06:52:53 -0700 |
---|---|---|
committer | Johnathan Corgan <jcorgan@corganenterprises.com> | 2009-10-29 06:52:53 -0700 |
commit | 8a0affcfb6154cadd1710e682fe09f040ed05a28 (patch) | |
tree | 680e797323aa598ee497f20fc4a249c4d5aeb83c /gnuradio-core/src/python/gnuradio/window.py | |
parent | 005f14ca07e66056bdc8e33a0cae1d461f5e1b9d (diff) | |
parent | 230e062e51d43f389520207cf147838c666a1f21 (diff) |
Merge branch 'flattopwindow' of http://gnuradio.org/git/jblum
Merge-fix: Remove debugging print
Merge-fix: Update copyrights
* 'flattopwindow' of http://gnuradio.org/git/jblum:
Added window option to wxgui fft and waterfall sink.
redid cos windows, added flattop and nuttall_cfd
Diffstat (limited to 'gnuradio-core/src/python/gnuradio/window.py')
-rw-r--r-- | gnuradio-core/src/python/gnuradio/window.py | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/gnuradio-core/src/python/gnuradio/window.py b/gnuradio-core/src/python/gnuradio/window.py index fb4a10675b..e109a98920 100644 --- a/gnuradio-core/src/python/gnuradio/window.py +++ b/gnuradio-core/src/python/gnuradio/window.py @@ -1,5 +1,5 @@ # -# Copyright 2004,2005 Free Software Foundation, Inc. +# Copyright 2004,2005,2009 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -153,32 +153,6 @@ def riemann(fft_size): j -= 1 return window -def blackmanharris(fft_size): - a0 = 0.35875 - a1 = 0.48829 - a2 = 0.14128 - a3 = 0.01168 - window = [0 for i in range(fft_size)] - for index in xrange(fft_size): - window[index] = a0 - window[index] -= a1*math.cos(2.0*math.pi*(index+0.5)/(fft_size - 1)) - window[index] += a2*math.cos(4.0*math.pi*(index+0.5)/(fft_size - 1)) - window[index] -= a3*math.cos(6.0*math.pi*(index+0.5)/(fft_size - 1)) - return window - -def nuttall(fft_size): - a0 = 0.3635819 - a1 = 0.4891775 - a2 = 0.1365995 - a3 = 0.0106411 - window = [0 for i in range(fft_size)] - for index in xrange(fft_size): - window[index] = a0 - window[index] -= a1*math.cos(2.0*math.pi*(index+0.5)/(fft_size - 1)) - window[index] += a2*math.cos(4.0*math.pi*(index+0.5)/(fft_size - 1)) - window[index] -= a3*math.cos(6.0*math.pi*(index+0.5)/(fft_size - 1)) - return window - def kaiser(fft_size,beta): ibeta = 1.0/izero(beta) inm1 = 1.0/(fft_size) @@ -187,4 +161,20 @@ def kaiser(fft_size,beta): window[index] = izero(beta*math.sqrt(1.0 - (index * inm1)*(index * inm1))) * ibeta return window - +# Closure to generate functions to create cos windows + +def coswindow(coeffs): + def closure(fft_size): + window = [0] * fft_size + #print list(enumerate(coeffs)) + for w_index in range(fft_size): + for (c_index, coeff) in enumerate(coeffs): + window[w_index] += (-1)**c_index * coeff * math.cos(2.0*c_index*math.pi*(w_index+0.5)/(fft_size-1)) + return window + return closure + +blackmanharris = coswindow((0.35875,0.48829,0.14128,0.01168)) +nuttall = coswindow((0.3635819,0.4891775,0.1365995,0.0106411)) # Wikipedia calls this Blackman-Nuttall +nuttall_cfd = coswindow((0.355768,0.487396,0.144232,0.012604)) # Wikipedia calls this Nuttall, continuous first deriv +flattop = coswindow((1.0,1.93,1.29,0.388,0.032)) # Flat top window, coeffs from Wikipedia +rectangular = lambda fft_size: [1]*fft_size |