NumPy Bartlett () in Python

The Bartlett window is very similar to the triangular window, except that the endpoints are at zero. It is often used in signal processing to narrow the signal without creating too much ripple in the frequency domain.

  Parameters (numpy.bartlett (M)):   M:  int Number of points in the output window. If zero or less, an empty array is returned.  Returns:   out: array

Triangular box with maximum value normalized to one (value one appears only if the number of samples is odd), with the first and last samples equal to zero.

Example :

import numpy as np

print (np.bartlett ( 12 ))

Exit:

 [0. 0.18181818 0.36363636 0.54545455 0.72727273 0.90909091 0.90909091 0.72727273 0.54545455 0.36363636 0.18181818 0.] 

Plotting a window and its frequency response (SciPy and matplotlib required):
For a window:

import numpy as np

import matplotlib.pyplot as plt

from numpy.fft import fft, fftshift

window = np.bartlett ( 51 )

plt.plot (window)

plt.title ( "Bartlett window" )

plt.ylabel ( "Amplitude" )

plt.xlabel ( "Sample" )

plt.show ()

Exit:

For frequency:

import numpy as np

import matplotlib.pyplot as plt

from numpy.fft import fft, fftshift

window = np.bartlett ( 51 )

plt.figure ()

A = fft (window, 2048 ) / 25.5

mag = np. abs (fftshift (A))

freq = np.linspace ( - 0.5 , 0.5 , len (A))

response = 20 * np.log10 (mag)

response = np.clip (response, - 100 , 100 )

plt.plot (freq, response )

plt.title ( "Frequency response of Bartlett window" )

plt.ylabel ( "Magnitude [dB]" )

plt.xlabel ( "Normalized frequency [cycles per sample] " )

plt.axis ( ` tight` )

plt.show ()

Exit: