Window Functions API
Signal window functions for spectral analysis.
Overview
Window functions reduce spectral leakage when performing FFT on finite-length signals.
All generator functions require size to be a positive integer. A size of 1 returns [1] so single-sample inputs remain finite and unchanged.
Window Function Generators
All window functions accept a size parameter and return a Float32Array.
hannWindow()
function hannWindow(size: number): Float32Array;The Hann window provides good frequency resolution with moderate sidelobe suppression.
hammingWindow()
function hammingWindow(size: number): Float32Array;The Hamming window offers better sidelobe suppression than Hann at the cost of wider mainlobe.
blackmanWindow()
function blackmanWindow(size: number): Float32Array;The Blackman window provides excellent sidelobe suppression for high-dynamic-range applications.
flatTopWindow()
function flatTopWindow(size: number): Float32Array;The Flat Top window minimizes amplitude error for precise amplitude measurements.
rectangularWindow()
function rectangularWindow(size: number): Float32Array;No windowing (equivalent to no window). Best for transient signals.
applyWindow()
Applies a window function to real-valued data.
function applyWindow(
data: Float32Array,
window: Float32Array
): Float32Array;2
3
4
data.length and window.length must match. A mismatch throws RangeError instead of silently dropping or zeroing samples.
Example
import { hannWindow, applyWindow } from 'webgpu-fft';
const signal = new Float32Array(1024);
// ... fill signal ...
const window = hannWindow(1024);
const windowed = applyWindow(signal, window);2
3
4
5
6
7
applyWindowComplex()
Applies a window function to interleaved complex data.
function applyWindowComplex(
data: Float32Array,
window: Float32Array
): Float32Array;2
3
4
data must contain complete interleaved real/imaginary pairs, and window.length must equal data.length / 2. Invalid shapes throw RangeError.
Comparison
| Window | Mainlobe Width | Sidelobe Level | Best For |
|---|---|---|---|
| Rectangular | Narrowest | -13 dB | Transients |
| Hann | 2 bins | -31 dB | General purpose |
| Hamming | 2 bins | -41 dB | Narrowband signals |
| Blackman | 3 bins | -58 dB | High dynamic range |
| Flat Top | 4 bins | -90 dB | Amplitude accuracy |
Related
- Spectrum Analyzer — Uses window functions internally
- Spectrum Analysis Tutorial — Practical usage