bundles / scipy 2.0.0.dev0+git20260907.41eeb59 / scipy / signal / windows / _windows / flattop
function
scipy.signal.windows._windows:flattop
source: build-install/usr/lib/python3.14/site-packages/scipy/signal/windows/_windows.py:704
Signature
def flattop(M, sym = True, *, xp = None, device = None)Summary
Return a flat top window.
Parameters
M: intNumber of points in the output window. If zero, an empty array is returned. An exception is thrown when it is negative.
sym: bool, optionalWhen True (default), generates a symmetric window, for use in filter design. When False, generates a periodic window, for use in spectral analysis.
xp: array_namespace, optionalOptional array namespace. Should be compatible with the array API standard, or supported by array-api-compat. Default:
numpydevice: anyoptional device specification for output. Should match one of the supported device specification in
xp.
Returns
w: ndarrayThe window, with the maximum value normalized to 1 (though the value 1 does not appear if
Mis even andsymis True).
Notes
Flat top windows are used for taking accurate measurements of signal amplitude in the frequency domain, with minimal scalloping error from the center of a frequency bin to its edges, compared to others. This is a 5th-order cosine window, with the 5 terms optimized to make the main lobe maximally flat. [1]
Examples
Plot the window and its frequency response:import numpy as np from scipy import signal from scipy.fft import fft, fftshift import matplotlib.pyplot as plt✓
window = signal.windows.flattop(51)
✓plt.plot(window) plt.title("Flat top window") plt.ylabel("Amplitude") plt.xlabel("Sample")✗
Text(0.5, 0, 'Sample')
plt.figure()
✗<Figure size 640x480 with 0 Axes>
A = fft(window, 2048) / (len(window)/2.0) freq = np.linspace(-0.5, 0.5, len(A)) response = 20 * np.log10(np.abs(fftshift(A / abs(A).max())))✓
plt.plot(freq, response) plt.axis([-0.5, 0.5, -120, 0]) plt.title("Frequency response of the flat top window") plt.ylabel("Normalized magnitude [dB]") plt.xlabel("Normalized frequency [cycles per sample]")✗
Text(0.5, 0, 'Normalized frequency [cycles per sample]')
Aliases
scipy.signal.windows.flattop