Hi all: When I try to implement some spectrum estimate algorithm encounter a problem like this hope some one can help me out ,cause I really don't understand how to design the window in window.py which I have post below or in the attachment.
please help me figure out the midn(fft_size) ?problem Thanks all! God bless you! File "usrp_welch_rt.py", line 327, in <module> main () File "usrp_welch_rt.py", line 323, in main app = stdgui2.stdapp(app_top_block, "USRP Welch", nstatus=1) File "/usr/local/lib/python2.6/dist-packages/gnuradio/wxgui/stdgui2.py", line 36, in __init__ wx.App.__init__ (self, redirect=False) File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 7978, in __init__ self._BootstrapApp() File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 7552, in _BootstrapApp return _core_.PyApp__BootstrapApp(*args, **kwargs) File "/usr/local/lib/python2.6/dist-packages/gnuradio/wxgui/stdgui2.py", line 39, in OnInit frame = stdframe (self.top_block_maker, self.title, self._nstatus) File "/usr/local/lib/python2.6/dist-packages/gnuradio/wxgui/stdgui2.py", line 60, in __init__ self.panel = stdpanel (self, self, top_block_maker) File "/usr/local/lib/python2.6/dist-packages/gnuradio/wxgui/stdgui2.py", line 81, in __init__ self.top_block = top_block_maker (frame, self, vbox, sys.argv) File "usrp_welch_rt.py", line 136, in __init__ mywindow1 = window.blackman2(options.fft_size) File "/usr/local/lib/python2.6/dist-packages/gnuradio/window.py", line 102, in blackman2 for index in xrange(midn(fft_size)+1): NameError: global name 'midn' is not defined window.py content below: ''' Routines for designing window functions. ''' import math from gnuradio import gr def izero(x): izeroepsilon = 1e-21 halfx = x/2.0 accum = u = n = 1 while 1: temp = halfx/n n += 1 temp *= temp u *= temp accum += u if u >= IzeroEPSILON*sum: break return accum def midm1(fft_size): return (fft_size - 1)/2 def midp1(fft_size): return (fft_size+1)/2 def freq(fft_size): return 2.0*math.pi/fft_size def rate(fft_size): return 1.0/(fft_size >> 1) def expn(fft_size): math.log(2.0)/(midn(fft_size) + 1.0) def hamming(fft_size): window = [] for index in xrange(fft_size): window.append(0.54 - 0.46 * math.cos (2 * math.pi / fft_size * index)) # Hamming window return window def hanning(fft_size): window = [] for index in xrange(fft_size): window.append(0.5 - 0.5 * math.cos (2 * math.pi / fft_size * index)) # von Hann window return window def welch(fft_size): window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)+1): window[j] = window[index] = (1.0 - math.sqrt((index - midm1(fft_size)) / midp1(fft_size))) j -= 1 return window def parzen(fft_size): window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)+1): window[j] = window[index] = (1.0 - math.abs((index - midm1(fft_size)) / midp1(fft_size))) j -= 1 return window def bartlett(fft_size): mfrq = freq(fft_size) angle = 0 window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)+1): window[j] = window[index] = angle angle += freq j -= 1 return window def blackman2(fft_size): mfrq = freq(fft_size) angle = 0 window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)+1): cx = math.cos(angle) window[j] = window[index] = (.34401 + (cx * (-.49755 + (cx * .15844)))) angle += freq j -= 1 return window def blackman3(fft_size): mfrq = freq(fft_size) angle = 0 window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)+1): cx = math.cos(angle) window[j] = window[index] = (.21747 + (cx * (-.45325 + (cx * (.28256 - (cx * .04672)))))) angle += freq j -= 1 return window def blackman4(fft_size): mfrq = freq(fft_size) angle = 0 window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)+1): cx = math.cos(angle) window[j] = window[index] = (.084037 + (cx * (-.29145 + (cx * (.375696 + (cx * (-.20762 + (cx * .041194)))))))) angle += freq j -= 1 return window def exponential(fft_size): expsum = 1.0 window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)+1): window[j] = window[i] = (expsum - 1.0) expsum *= expn(fft_size) j -= 1 return window def riemann(fft_size): sr1 = freq(fft_size) window = [0 for i in range(fft_size)] j = fft_size-1 for index in xrange(midn(fft_size)): if index == midn(fft_size): window[index] = window[j] = 1.0 else: cx = sr1*midn(fft_size) - index window[index] = window[j] = math.sin(cx)/cx j -= 1 return window def kaiser(fft_size,beta): ibeta = 1.0/izero(beta) inm1 = 1.0/(fft_size) window = [0 for i in range(fft_size)] for index in xrange(fft_size): 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
window.py
Description: Binary data
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio