// Copyright ©2020 The Gonum Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package window provides a set of functions to perform the transformation
// of sequence by different window functions.
//
// Window functions can be used to control spectral leakage parameters
// when performing a Fourier transform on a signal of limited length.
// See https://en.wikipedia.org/wiki/Window_function for more details.
//
// Spectral leakage parameters
//
// Application of window functions to an input will result in changes
// to the frequency content of the signal in an effect called spectral
// leakage. See https://en.wikipedia.org/wiki/Spectral_leakage.
//
// The characteristic changes associated with each window function may
// be described using a set of spectral leakage parameters; β, ΔF_0, ΔF_0.5,
// K and ɣ_max.
//
// The β, attenuation, coefficient of a window is the ratio of the
// constant component of the spectrum resulting from use of the window
// compared to that produced using the rectangular window, expressed in
// a logarithmic scale.
//  β_w = 20 log10(A_w / A_rect) dB
//
// The ΔF_0 parameter describes the normalized width of the main lobe of
// the frequency spectrum at zero amplitude.
//
// The ΔF_0.5 parameter describes the normalized width of the main lobe of
// the frequency spectrum at -3 dB (half maximum amplitude).
//
// The K parameter describes the relative width of the main lobe of the
// frequency spectrum produced by the window compared with the rectangular
// window. The rectangular window has the lowest ΔF_0 at a value of 2.
//  K_w = ΔF_0_w/ΔF_0_rect.
// The value of K divides windows into high resolution windows (K≤3) and
// low resolution windows (K>3).
//
// The ɣ_max parameter is the maximum level of the side lobes of the
// normalized spectrum, in decibels.
//
// Window interval
//
// The window intervals used in the window functions are offset by a half
// to ensure that the window extends to exclude the flanking zeros.
package window // import "gonum.org/v1/gonum/dsp/window"

// The article at http://www.dsplib.ru/content/win/win.html is the origin
// of much of the information used in this package. It is in Russian, but
// Google translate does a pretty good job with it.
