@@ -108,7 +108,7 @@ $w(n) = 1 - \left|\frac{2n - N + 1}{N - 1}\right|$
108108
109109<img src =" docs/plots/bartlett.svg " >
110110
111- Linear taper, zero endpoints. Bartlett's method PSD estimation.[ 3 ]
111+ Linear taper, zero endpoints. Bartlett's method PSD estimation.[ ^ bartlett1950 ]
112112** -27 dB** sidelobe · ** -12 dB/oct** rolloff
113113
114114### ` welch(i, N) `
@@ -117,7 +117,7 @@ $w(n) = 1 - \left(\frac{2n - N + 1}{N - 1}\right)^2$
117117
118118<img src =" docs/plots/welch.svg " >
119119
120- Parabolic taper. Welch's method PSD estimation.[ 8 ]
120+ Parabolic taper. Welch's method PSD estimation.[ ^ welch1967 ]
121121** -21 dB** sidelobe · ** -12 dB/oct** rolloff
122122
123123### ` connes(i, N) `
@@ -126,7 +126,7 @@ $w(n) = \left[1 - \left(\frac{2n - N + 1}{N - 1}\right)^2\right]^2$
126126
127127<img src =" docs/plots/connes.svg " >
128128
129- Welch squared (4th power parabolic). FTIR spectroscopy, interferogram apodization.[ 6 ]
129+ Welch squared (4th power parabolic). FTIR spectroscopy, interferogram apodization.[ ^ connes1961 ]
130130** -24 dB/oct** rolloff
131131
132132### ` hann(i, N) `
@@ -135,7 +135,7 @@ $w(n) = 0.5 - 0.5\cos\!\left(\frac{2\pi n}{N-1}\right)$
135135
136136<img src =" docs/plots/hann.svg " >
137137
138- Raised cosine, zero endpoints. The default general-purpose choice. STFT with 50% overlap (COLA). Also called "Hanning" (misnomer).[ 5 ]
138+ Raised cosine, zero endpoints. The default general-purpose choice. STFT with 50% overlap (COLA). Also called "Hanning" (misnomer).[ ^ blackman1958 ]
139139** -32 dB** sidelobe · ** -18 dB/oct** rolloff
140140
141141### ` hamming(i, N) `
@@ -144,7 +144,7 @@ $w(n) = 0.54 - 0.46\cos\!\left(\frac{2\pi n}{N-1}\right)$
144144
145145<img src =" docs/plots/hamming.svg " >
146146
147- Raised cosine, nonzero endpoints. Optimized for first sidelobe cancellation. FIR filter design, speech processing.[ 11 ]
147+ Raised cosine, nonzero endpoints. Optimized for first sidelobe cancellation. FIR filter design, speech processing.[ ^ hamming1977 ]
148148** -43 dB** sidelobe · ** -6 dB/oct** rolloff
149149
150150### ` cosine(i, N) `
@@ -153,7 +153,7 @@ $w(n) = \sin\!\left(\frac{\pi n}{N-1}\right)$
153153
154154<img src =" docs/plots/cosine.svg " >
155155
156- Half-period sine. MDCT audio codecs: MP3, AAC, Vorbis.[ 17 ]
156+ Half-period sine. MDCT audio codecs: MP3, AAC, Vorbis.[ ^ princen1987 ]
157157** -23 dB** sidelobe · ** -12 dB/oct** rolloff
158158
159159### ` blackman(i, N) `
@@ -162,7 +162,7 @@ $w(n) = 0.42 - 0.5\cos\!\left(\frac{2\pi n}{N-1}\right) + 0.08\cos\!\left(\frac{
162162
163163<img src =" docs/plots/blackman.svg " >
164164
165- 3-term cosine sum. Better leakage than Hann at the cost of wider main lobe.[ 5 ]
165+ 3-term cosine sum. Better leakage than Hann at the cost of wider main lobe.[ ^ blackman1958 ]
166166** -58 dB** sidelobe · ** -18 dB/oct** rolloff
167167
168168### ` exactBlackman(i, N) `
@@ -171,7 +171,7 @@ $w(n) = 0.42659 - 0.49656\cos\!\left(\frac{2\pi n}{N-1}\right) + 0.076849\cos\!\
171171
172172<img src =" docs/plots/exactBlackman.svg " >
173173
174- Blackman with exact zero placement at 3rd and 4th sidelobes.[ 12 ]
174+ Blackman with exact zero placement at 3rd and 4th sidelobes.[ ^ harris1978 ]
175175** -69 dB** sidelobe · ** -6 dB/oct** rolloff
176176
177177### ` nuttall(i, N) `
@@ -180,7 +180,7 @@ $w(n) = 0.355768 - 0.487396\cos\!\left(\frac{2\pi n}{N\!-\!1}\right) + 0.144232\
180180
181181<img src =" docs/plots/nuttall.svg " >
182182
183- 4-term cosine sum, continuous 1st derivative. High-dynamic-range analysis without edge discontinuity.[ 15 ]
183+ 4-term cosine sum, continuous 1st derivative. High-dynamic-range analysis without edge discontinuity.[ ^ nuttall1981 ]
184184** -93 dB** sidelobe · ** -18 dB/oct** rolloff
185185
186186### ` blackmanNuttall(i, N) `
@@ -189,7 +189,7 @@ $w(n) = 0.3635819 - 0.4891775\cos\!\left(\frac{2\pi n}{N\!-\!1}\right) + 0.13659
189189
190190<img src =" docs/plots/blackmanNuttall.svg " >
191191
192- 4-term cosine sum, lowest sidelobes among 4-term windows.[ 15 ]
192+ 4-term cosine sum, lowest sidelobes among 4-term windows.[ ^ nuttall1981 ]
193193** -98 dB** sidelobe · ** -6 dB/oct** rolloff
194194
195195### ` blackmanHarris(i, N) `
@@ -198,7 +198,7 @@ $w(n) = 0.35875 - 0.48829\cos\!\left(\frac{2\pi n}{N\!-\!1}\right) + 0.14128\cos
198198
199199<img src =" docs/plots/blackmanHarris.svg " >
200200
201- 4-term minimum sidelobe. ADC testing, measurement instrumentation, >80 dB dynamic range.[ 12 ]
201+ 4-term minimum sidelobe. ADC testing, measurement instrumentation, >80 dB dynamic range.[ ^ harris1978 ]
202202** -92 dB** sidelobe · ** -6 dB/oct** rolloff
203203
204204### ` flatTop(i, N) `
@@ -207,7 +207,7 @@ $w(n) = 1 - 1.93\cos\!\left(\frac{2\pi n}{N\!-\!1}\right) + 1.29\cos\!\left(\fra
207207
208208<img src =" docs/plots/flatTop.svg " >
209209
210- 5-term cosine sum, near-zero scalloping. Peak ~ 4.64 (by design). Amplitude calibration, transducer calibration (~ 0.01 dB accuracy). ISO 18431.[ 19 ]
210+ 5-term cosine sum, near-zero scalloping. Peak ~ 4.64 (by design). Amplitude calibration, transducer calibration (~ 0.01 dB accuracy). ISO 18431.[ ^ heinzel2002 ]
211211** -93 dB** sidelobe · ** -6 dB/oct** rolloff
212212
213213### ` bartlettHann(i, N) `
@@ -216,7 +216,7 @@ $w(n) = 0.62 - 0.48\left|\frac{n}{N\!-\!1} - 0.5\right| - 0.38\cos\!\left(\frac{
216216
217217<img src =" docs/plots/bartlettHann.svg " >
218218
219- Bartlett-Hann hybrid. Balanced near/far sidelobe levels.[ 18 ]
219+ Bartlett-Hann hybrid. Balanced near/far sidelobe levels.[ ^ ha1989 ]
220220** -36 dB** sidelobe
221221
222222### ` lanczos(i, N) `
@@ -225,7 +225,7 @@ $w(n) = \text{sinc}\!\left(\frac{2n}{N-1} - 1\right)$
225225
226226<img src =" docs/plots/lanczos.svg " >
227227
228- Sinc main lobe. Image resampling, interpolation (FFmpeg, ImageMagick).[ 14 ]
228+ Sinc main lobe. Image resampling, interpolation (FFmpeg, ImageMagick).[ ^ duchon1979 ]
229229** -26 dB** sidelobe
230230
231231### ` parzen(i, N) `
@@ -234,7 +234,7 @@ $w(n) = 1 - 6a^2(1-a)$ for $|a| \le 0.5$,   $w(n) = 2(1-a)^3$ for $|a| > 0.
234234
235235<img src =" docs/plots/parzen.svg " >
236236
237- 4th-order B-spline. Always-positive spectrum. Kernel density estimation.[ 7 ]
237+ 4th-order B-spline. Always-positive spectrum. Kernel density estimation.[ ^ parzen1961 ]
238238** -53 dB** sidelobe · ** -24 dB/oct** rolloff
239239
240240### ` bohman(i, N) `
@@ -258,7 +258,7 @@ $w(n) = \frac{I_0\!\left(\beta\sqrt{1 - \left(\frac{2n-N+1}{N-1}\right)^2}\right
258258
259259<img src =" docs/plots/kaiser.svg " >
260260
261- Near-optimal DPSS approximation via Bessel I₀. The standard parameterized window for FIR filter design.[ 10 ]
261+ Near-optimal DPSS approximation via Bessel I₀. The standard parameterized window for FIR filter design.[ ^ kaiser1974 ]
262262
263263### ` gaussian(i, N, sigma) `
264264
@@ -268,7 +268,7 @@ $w(n) = \exp\!\left[-\frac{1}{2}\left(\frac{2n-N+1}{\sigma(N-1)}\right)^2\right]
268268
269269<img src =" docs/plots/gaussian.svg " >
270270
271- Gaussian bell, minimum time-bandwidth product. STFT/Gabor transform, frequency estimation via parabolic interpolation.[ 2 ]
271+ Gaussian bell, minimum time-bandwidth product. STFT/Gabor transform, frequency estimation via parabolic interpolation.[ ^ gabor1946 ]
272272
273273### ` generalizedNormal(i, N, sigma, p) `
274274
@@ -296,7 +296,7 @@ Flat center with cosine-tapered edges. Preserves signal amplitude while tapering
296296
297297<img src =" docs/plots/planckTaper.svg " >
298298
299- C∞-smooth bump function (infinitely differentiable). Gravitational wave analysis (LIGO/Virgo).[ 20 ]
299+ C∞-smooth bump function (infinitely differentiable). Gravitational wave analysis (LIGO/Virgo).[ ^ mckechan2010 ]
300300
301301### ` powerOfSine(i, N, alpha) `
302302
@@ -316,7 +316,7 @@ $w(n) = \exp\!\left(\frac{-|2n-N+1|}{\tau(N-1)}\right)$
316316
317317<img src =" docs/plots/exponential.svg " >
318318
319- Exponential decay from center. Modal analysis, impact testing.[ 12 ]
319+ Exponential decay from center. Modal analysis, impact testing.[ ^ harris1978 ]
320320
321321### ` hannPoisson(i, N, alpha) `
322322
@@ -336,7 +336,7 @@ $w(n) = \frac{1}{1+\left(\frac{\alpha(2n-N+1)}{N-1}\right)^2}$
336336
337337<img src =" docs/plots/cauchy.svg " >
338338
339- Lorentzian shape. Matches spectral line shapes in spectroscopy.[ 12 ]
339+ Lorentzian shape. Matches spectral line shapes in spectroscopy.[ ^ harris1978 ]
340340
341341### ` rifeVincent(i, N, order) `
342342
@@ -346,15 +346,15 @@ $w(n) = \frac{1}{Z}\sum_{k=0}^{K}(-1)^k a_k\cos\frac{2\pi kn}{N-1}$
346346
347347<img src =" docs/plots/rifeVincent.svg " >
348348
349- Class I cosine-sum optimized for sidelobe fall-off. Power grid harmonic analysis, interpolated DFT.[ 9 ]
349+ Class I cosine-sum optimized for sidelobe fall-off. Power grid harmonic analysis, interpolated DFT.[ ^ rife1970 ]
350350
351351### ` confinedGaussian(i, N, sigmaT) `
352352
353353` sigmaT ` : temporal width, default ** 0.1** .
354354
355355<img src =" docs/plots/confinedGaussian.svg " >
356356
357- Optimal RMS time-frequency bandwidth. Time-frequency analysis, audio coding.[ 21 ]
357+ Optimal RMS time-frequency bandwidth. Time-frequency analysis, audio coding.[ ^ starosielec2014 ]
358358
359359
360360
@@ -370,7 +370,7 @@ $W(k) = (-1)^k T_{N-1}\!\left(\beta\cos\frac{\pi k}{N}\right)$,   $w = \tex
370370
371371<img src =" docs/plots/dolphChebyshev.svg " >
372372
373- Optimal: narrowest main lobe for given equiripple sidelobe level. Antenna design, radar.[ 1 ]
373+ Optimal: narrowest main lobe for given equiripple sidelobe level. Antenna design, radar.[ ^ dolph1946 ]
374374
375375### ` taylor(i, N, nbar, sll) `
376376
@@ -380,7 +380,7 @@ $w(n) = 1 + 2\sum_{m=1}^{\bar{n}-1} F_m \cos\frac{2\pi m(n-(N\!-\!1)/2)}{N}$
380380
381381<img src =" docs/plots/taylor.svg " >
382382
383- Monotonically decreasing sidelobes. The radar community standard for SAR image formation.[ 4 ]
383+ Monotonically decreasing sidelobes. The radar community standard for SAR image formation.[ ^ taylor1955 ]
384384
385385### ` kaiserBesselDerived(i, N, beta) `
386386
@@ -390,7 +390,7 @@ $w(n) = \sqrt{\frac{\sum_{j=0}^{n} K(j)}{\sum_{j=0}^{N/2} K(j)}}$,   $K(j)
390390
391391<img src =" docs/plots/kaiserBesselDerived.svg " >
392392
393- Princen-Bradley condition for perfect MDCT reconstruction. AAC, Vorbis, Opus audio codecs.[ 17 ]
393+ Princen-Bradley condition for perfect MDCT reconstruction. AAC, Vorbis, Opus audio codecs.[ ^ princen1987 ]
394394
395395### ` dpss(i, N, W) `
396396
@@ -400,7 +400,7 @@ $\mathbf{T}\mathbf{v} = \lambda\mathbf{v}$,   $T_{jk} = \frac{\sin 2\pi W(j
400400
401401<img src =" docs/plots/dpss.svg " >
402402
403- Dominant eigenvector of sinc Toeplitz matrix — provably optimal energy concentration. Also called Slepian window. Multitaper spectral estimation, neuroscience, climate science.[ 13 ]
403+ Dominant eigenvector of sinc Toeplitz matrix — provably optimal energy concentration. Also called Slepian window. Multitaper spectral estimation, neuroscience, climate science.[ ^ slepian1978 ]
404404
405405### ` ultraspherical(i, N, mu, xmu) `
406406
@@ -410,7 +410,7 @@ $W(k) = C_n^\mu\!\left(x_\mu\cos\frac{\pi k}{N}\right)$,   $w = \text{IDFT}
410410
411411<img src =" docs/plots/ultraspherical.svg " >
412412
413- Gegenbauer polynomial window. Independent control of sidelobe level and taper rate. Antenna design, beamforming.[ 16 ]
413+ Gegenbauer polynomial window. Independent control of sidelobe level and taper rate. Antenna design, beamforming.[ ^ streit1984 ]
414414
415415
416416
@@ -475,28 +475,26 @@ cola(hann, 1024, 512) // 0 — perfect STFT reconstruction
475475- ** ` scallopLoss(fn, N, ...params) ` ** — worst-case amplitude error in dB between DFT bins. Rectangular = 3.92, Hann = 1.42, flat-top ≈ 0.
476476- ** ` cola(fn, N, hop, ...params) ` ** — COLA deviation. 0 = perfect STFT reconstruction at given hop size.
477477
478- ## References
479-
480- 1 . C.L. Dolph, "A Current Distribution for Broadside Arrays," * Proc. IRE* 34, 1946.
481- 2 . D. Gabor, "Theory of Communication," * J. IEE* 93, 1946.
482- 3 . M.S. Bartlett, "Periodogram Analysis and Continuous Spectra," * Biometrika* 37, 1950.
483- 4 . T.T. Taylor, "Design of Line-Source Antennas," * IRE Trans. Antennas Propag.* AP-4, 1955.
484- 5 . R.B. Blackman & J.W. Tukey, * The Measurement of Power Spectra* , Dover, 1958.
485- 6 . J. Connes, "Recherches sur la spectroscopie par transformation de Fourier," * Revue d'Optique* 40, 1961.
486- 7 . E. Parzen, "Mathematical Considerations in the Estimation of Spectra," * Technometrics* 3, 1961.
487- 8 . P.D. Welch, "The Use of FFT for Estimation of Power Spectra," * IEEE Trans. Audio Electroacoustics* AU-15, 1967.
488- 9 . D.C. Rife & G.A. Vincent, "Use of the DFT in Measurement of Frequencies and Levels of Tones," * Bell Syst. Tech. J.* 49, 1970.
489- 10 . J.F. Kaiser, "Nonrecursive Digital Filter Design Using the Sinh Window Function," * IEEE Int. Symp. Circuits and Systems* , 1974.
490- 11 . R.W. Hamming, * Digital Filters* , Prentice-Hall, 1977.
491- 12 . F.J. Harris, "On the Use of Windows for Harmonic Analysis with the DFT," * Proc. IEEE* 66, 1978.
492- 13 . D. Slepian, "Prolate Spheroidal Wave Functions — V," * Bell Syst. Tech. J.* 57, 1978.
493- 14 . C.E. Duchon, "Lanczos Filtering in One and Two Dimensions," * J. Applied Meteorology* 18, 1979.
494- 15 . A.H. Nuttall, "Some Windows with Very Good Sidelobe Behavior," * IEEE Trans. ASSP* 29, 1981.
495- 16 . R.L. Streit, "A Two-Parameter Family of Weights for Nonrecursive Digital Filters and Antennas," * IEEE Trans. ASSP* 32, 1984.
496- 17 . J.P. Princen, A.W. Johnson & A.B. Bradley, "Subband/Transform Coding Using Filter Bank Designs Based on Time Domain Aliasing Cancellation," * ICASSP* , 1987.
497- 18 . Y.H. Ha & J.A. Pearce, "A New Window and Comparison to Standard Windows," * IEEE Trans. ASSP* , 1989.
498- 19 . G. Heinzel, A. Rudiger & R. Schilling, "Spectrum and Spectral Density Estimation by the DFT," Max Planck Institute, 2002.
499- 20 . D.J.A. McKechan et al., "A Tapering Window for Time-Domain Templates," * Class. Quantum Grav.* 27, 2010.
500- 21 . S. Starosielec & D. Hagemeier, "Discrete-Time Windows with Minimal RMS Bandwidth," * Signal Processing* 102, 2014.
478+ [ ^ dolph1946 ] : C.L. Dolph, "A Current Distribution for Broadside Arrays," * Proc. IRE* 34, 1946.
479+ [ ^ gabor1946 ] : D. Gabor, "Theory of Communication," * J. IEE* 93, 1946.
480+ [ ^ bartlett1950 ] : M.S. Bartlett, "Periodogram Analysis and Continuous Spectra," * Biometrika* 37, 1950.
481+ [ ^ taylor1955 ] : T.T. Taylor, "Design of Line-Source Antennas," * IRE Trans. Antennas Propag.* AP-4, 1955.
482+ [ ^ blackman1958 ] : R.B. Blackman & J.W. Tukey, * The Measurement of Power Spectra* , Dover, 1958.
483+ [ ^ connes1961 ] : J. Connes, "Recherches sur la spectroscopie par transformation de Fourier," * Revue d'Optique* 40, 1961.
484+ [ ^ parzen1961 ] : E. Parzen, "Mathematical Considerations in the Estimation of Spectra," * Technometrics* 3, 1961.
485+ [ ^ welch1967 ] : P.D. Welch, "The Use of FFT for Estimation of Power Spectra," * IEEE Trans. Audio Electroacoustics* AU-15, 1967.
486+ [ ^ rife1970 ] : D.C. Rife & G.A. Vincent, "Use of the DFT in Measurement of Frequencies and Levels of Tones," * Bell Syst. Tech. J.* 49, 1970.
487+ [ ^ kaiser1974 ] : J.F. Kaiser, "Nonrecursive Digital Filter Design Using the Sinh Window Function," * IEEE Int. Symp. Circuits and Systems* , 1974.
488+ [ ^ hamming1977 ] : R.W. Hamming, * Digital Filters* , Prentice-Hall, 1977.
489+ [ ^ harris1978 ] : F.J. Harris, "On the Use of Windows for Harmonic Analysis with the DFT," * Proc. IEEE* 66, 1978.
490+ [ ^ slepian1978 ] : D. Slepian, "Prolate Spheroidal Wave Functions — V," * Bell Syst. Tech. J.* 57, 1978.
491+ [ ^ duchon1979 ] : C.E. Duchon, "Lanczos Filtering in One and Two Dimensions," * J. Applied Meteorology* 18, 1979.
492+ [ ^ nuttall1981 ] : A.H. Nuttall, "Some Windows with Very Good Sidelobe Behavior," * IEEE Trans. ASSP* 29, 1981.
493+ [ ^ streit1984 ] : R.L. Streit, "A Two-Parameter Family of Weights for Nonrecursive Digital Filters and Antennas," * IEEE Trans. ASSP* 32, 1984.
494+ [ ^ princen1987 ] : J.P. Princen, A.W. Johnson & A.B. Bradley, "Subband/Transform Coding Using Filter Bank Designs Based on TDAC," * ICASSP* , 1987.
495+ [ ^ ha1989 ] : Y.H. Ha & J.A. Pearce, "A New Window and Comparison to Standard Windows," * IEEE Trans. ASSP* , 1989.
496+ [ ^ heinzel2002 ] : G. Heinzel, A. Rudiger & R. Schilling, "Spectrum and Spectral Density Estimation by the DFT," Max Planck Institute, 2002.
497+ [ ^ mckechan2010 ] : D.J.A. McKechan et al., "A Tapering Window for Time-Domain Templates," * Class. Quantum Grav.* 27, 2010.
498+ [ ^ starosielec2014 ] : S. Starosielec & D. Hagemeier, "Discrete-Time Windows with Minimal RMS Bandwidth," * Signal Processing* 102, 2014.
501499
502500<p align =center >MIT · <a href =" https://github.com/krishnized/license/ " >ॐ</a ></p >
0 commit comments