Skip to content

Commit 80f5820

Browse files
committed
Update README.md
1 parent e54bd54 commit 80f5820

1 file changed

Lines changed: 48 additions & 50 deletions

File tree

README.md

Lines changed: 48 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -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$, &ensp; $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)$, &ensp; $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)}}$, &ensp; $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}$, &ensp; $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)$, &ensp; $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

Comments
 (0)