# A Gallery of SciPy's Window Functions¶

## This is mostly for quick visual reference and comparison between windows¶

In [1]:
import matplotlib.pyplot as plt
import scipy.signal as sig
%matplotlib inline

In [2]:
n_points = 1025


## $a_{0} = 0.62, a_{1} = 0.48, a_{2} = 0.38$¶

In [3]:
window = sig.barthann(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Bartlett-Hann')

Out[3]:
<matplotlib.text.Text at 0x7fb3221be310>

## $w(n) = \frac{2}{M - 1}(\frac{M - 1}{2} - \left|n - \frac{M - 1}{2}\right|)$¶

In [4]:
window = sig.bartlett(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Bartlett')

Out[4]:
<matplotlib.text.Text at 0x7fb321f37210>

## $w(n) = 0.42 - 0.5 \cos(2\pi n/M) + 0.08 \cos(4\pi n/M)$¶

In [5]:
window = sig.blackman(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Blackman')

Out[5]:
<matplotlib.text.Text at 0x7fb3220e46d0>

## $a_{0} = 0.38575, a_{1} = 0.48829, a_{2} = 0.14128, a_{3} = 0.01168$¶

In [6]:
window = sig.blackmanharris(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Blackman-Harris')

Out[6]:
<matplotlib.text.Text at 0x7fb32201f890>

## $x \in [-1, 1]$¶

In [7]:
window = sig.bohman(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Bohman')

Out[7]:
<matplotlib.text.Text at 0x7fb322007750>

## 6. Boxcar window¶

(from the docs: included for correctness, equivalent to no window at all.)

In [8]:
window = sig.boxcar(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Boxcar')

Out[8]:
<matplotlib.text.Text at 0x7fb321c6e4d0>

## $\beta = \cosh \left [\frac{1}{M}¶ \cosh^{-1}(10^\frac{A}{20}) \right ]$

In [9]:
window = sig.chebwin(n_points, at=100)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Dolph-Chebyshev (attenutation 100 dB)')

Out[9]:
<matplotlib.text.Text at 0x7fb321bc5b10>

## $w(n) = \sin(\frac{\pi n}{N - 1})$¶

In [10]:
window = sig.cosine(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Cosine')

Out[10]:
<matplotlib.text.Text at 0x7fb321b03510>

## $a_{0} = 0.2156, a_{1} = 0.4160, a_{2} = 0.2781, a_{3} = 0.0836, a_{4} = 0.0069$¶

In [11]:
window = sig.flattop(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Flat Top')

Out[11]:
<matplotlib.text.Text at 0x7fb321a34810>

## $w(n) = e^{ -\frac{1}{2}\left(\frac{n}{\sigma}\right)^2 }$¶

In [12]:
window = sig.gaussian(n_points, std=130)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Gaussian ($\sigma$=130)')

Out[12]:
<matplotlib.text.Text at 0x7fb321978210>

## $w(n) = e^{ -\frac{1}{2}\left|\frac{n}{\sigma}\right|^{2p} }$¶

In [13]:
window = sig.general_gaussian(n_points, sig=150, p=1.5)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Generalized Gaussian ($\sigma$=150, $p=1.5$)')

Out[13]:
<matplotlib.text.Text at 0x7fb3218b1a10>

## $w(n) = 0.54 - 0.46 \cos\left(\frac{2\pi{n}}{M-1}\right) \qquad 0 \leq n \leq M-1$¶

In [14]:
window = sig.hamming(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Hamming')

Out[14]:
<matplotlib.text.Text at 0x7fb3217c48d0>

## $w(n) = 0.5 - 0.5 \cos\left(\frac{2\pi{n}}{M-1}\right)¶ \qquad 0 \leq n \leq M-1$

In [15]:
window = sig.hann(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Hann')

Out[15]:
<matplotlib.text.Text at 0x7fb3216f0e10>

## $\quad -\frac{M-1}{2} \leq n \leq \frac{M-1}{2},$¶

### where $I_{0}$ is the modified 4th order Bessel Function¶

In [16]:
window = sig.kaiser(n_points, beta=14)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Kaiser (beta=14)')

Out[16]:
<matplotlib.text.Text at 0x7fb3216a0f50>

## $a_{0} = 0.3635819, a_{1} = 0.4891775, a_{2} = 0.1365995, a_{3} = 0.0106411$¶

In [17]:
window = sig.nuttall(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Nuttall')

Out[17]:
<matplotlib.text.Text at 0x7fb3215c4f10>

## 16. Parzen Window¶

### 4 - fold convolution of a rectangular window¶

In [18]:
window = sig.parzen(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Parzen')

Out[18]:
<matplotlib.text.Text at 0x7fb321596850>

## 17. Slepian (DPSS) Window¶

In [19]:
window = sig.slepian(n_points, width=0.02)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('DPSS (width=0.002)')

Out[19]:
<matplotlib.text.Text at 0x7fb3214d75d0>

## 18. Triangular Window¶

In [20]:
window = sig.triang(n_points)
plt.figure(figsize=(12, 8))
plt.plot(window)
plt.xlim([0, n_points])
plt.title('Triangular')

Out[20]:
<matplotlib.text.Text at 0x7fb3213c9b10>

# Overlay of all windows¶

In [21]:
arg_map = {
'barthann': [sig.barthann, dict(M=n_points)],
'bartlett': [sig.bartlett, dict(M=n_points)],
'blackman': [sig.blackman, dict(M=n_points)],
'blackmanharris': [sig.blackmanharris, dict(M=n_points)],
'bohman': [sig.bohman, dict(M=n_points)],
'boxcar': [sig.boxcar, dict(M=n_points)],
'chebwin': [sig.chebwin, dict(M=n_points, at=100)],
'cosine': [sig.cosine, dict(M=n_points)],
'flattop': [sig.flattop, dict(M=n_points)],
'gaussian': [sig.gaussian, dict(M=n_points, std=130)],
'general_gaussian': [sig.general_gaussian, dict(M=n_points, sig=150, p=1.5)],
'hamming': [sig.hamming, dict(M=n_points)],
'hann': [sig.hann, dict(M=n_points)],
'kaiser': [sig.kaiser, dict(M=n_points, beta=14)],
'nuttall': [sig.nuttall, dict(M=n_points)],
'parzen': [sig.parzen, dict(M=n_points)],
'selpian': [sig.slepian, dict(M=n_points, width=0.02)],
'triang': [sig.triang, dict(M=n_points)]
}

plt.figure(figsize=(15, 15))
plt.xlim([0, n_points])
for name, calldata in arg_map.iteritems():
function, args = calldata
window = function(**args)
plt.plot(window, label=name)
plt.legend()

Out[21]:
<matplotlib.legend.Legend at 0x7fb3212ded50>
In [ ]: