# Computing Convolution using Numpy's Kaiser Windows

# Computing Convolution using Numpy's Kaiser Windows

Join the DZone community and get the full member experience.

Join For FreeLearn how error monitoring with Sentry closes the gap between the product team and your customers. With Sentry, you can focus on what you do best: building and scaling software that makes your users’ lives better.

_{t}is computed as follows:

It is the mean of the weighted summation over a window of length k and w

_{t}are the weights. Usually, the sequence w is generated using a window function. Numpy has a number of window functions already implemented: bartlett, blackman, hamming, hanning and kaiser. So, let's plot some Kaiser windows varying the parameter beta:

import numpy import pylab beta = [2,4,16,32] pylab.figure() for b in beta: w = numpy.kaiser(101,b) pylab.plot(range(len(w)),w,label="beta = "+str(b)) pylab.xlabel('n') pylab.ylabel('W_K') pylab.legend() pylab.show()

The graph would appear as follows:

And now, we can use the function convolve(...) to compute the convolution between a vector x and one of the Kaiser window we have seen above:

def smooth(x,beta): """ kaiser window smoothing """ window_len=11 # extending the data at beginning and at the end # to apply the window at the borders s = numpy.r_[x[window_len-1:0:-1],x,x[-1:-window_len:-1]] w = numpy.kaiser(window_len,beta) y = numpy.convolve(w/w.sum(),s,mode='valid') return y[5:len(y)-5]

Let's test it on a random sequence:

# random data generation y = numpy.random.random(100)*100 for i in range(100): y[i]=y[i]+i**((150-i)/80.0) # modifies the trend # smoothing the data pylab.figure(1) pylab.plot(y,'-k',label="original signal",alpha=.3) for b in beta: yy = smooth(y,b) pylab.plot(yy,label="filtered (beta = "+str(b)+")") pylab.legend() pylab.show()

The program would have an output similar to the following:

As we can see, the original sequence have been smoothed by the windows.

Source: http://glowingpython.blogspot.com/2012/02/convolution-with-numpy.html

Source: http://glowingpython.blogspot.com/2012/02/convolution-with-numpy.html

What’s the best way to boost the efficiency of your product team and ship with confidence? Check out this ebook to learn how Sentry's real-time error monitoring helps developers stay in their workflow to fix bugs before the user even knows there’s a problem.

Opinions expressed by DZone contributors are their own.

## {{ parent.title || parent.header.title}}

## {{ parent.tldr }}

## {{ parent.linkDescription }}

{{ parent.urlSource.name }}