Computing Chebyshev Window Sequences
Chebyshev windows (also called Dolph-Chebyshev, or Tchebyschev windows), have several useful properties. Those windows, unlike the fixed Hanning, Hamming, or Blackman window functions, have adjustable sidelobe levels. For a given user-defined sidelobe level and window sequence length, Chebyshev windows yield the most narrow mainlobe compared to any fixed window functions.
However, for some reason, detailed descriptions of how to compute Chebyshev window sequences are not readily available in the standard DSP textbooks, and I'm not rightly sure why that is. In any case, here are the steps for one method of computing M-sample symmetrical Chebyshev window sequences:
-
If the desired Chebyshev window sequence length is M, then define integer N = M-1.
-
Define the window's sidelobe-level control parameter as γ.The window's sidelobe levels, relative to the mainlobe peak, will be -20g dB. (Thus, for example, if we desire frequency-domain maximum sidelobe levels of 60 dB below the mainlobe's peak magnitude then we set γ = 3.)
-
Compute parameter α as
α = cosh[cosh-1(10γ)/N].
-
Compute the N-length sequence A(m) using
A(m) = |α•cos(πm/N)|
where the index m is 0 ≤ m ≤ (N-1).
-
For each m, evaluate the Nth-degree Chebyshev polynomial whose argument is A(m) to generate a frequency-domain sequence W(m). There are many ways to evaluate Chebyshev polynomials. Due to its simplicity of notation, I suggest the following:
W(m) = (-1)m•cosh{N•cosh-1[A(m)]}, when |A(m)| > 1,
or
W(m) = (-1)m•cos{N•cos-1[A(m)]}, when |A(m)| ≤ 1.
The W(m) sequence is real-only, although our software's computational numerical errors may produce a complex-valued W(m) with very small imaginary parts. Those imaginary parts, if they exist, should be ignored. The above (-1)m factors are necessary because the frequency-domain index m is never less than zero.
-
Compute a preliminary time-domain window sequence, w(m), using
w(m) = real part of the N-point inverse DFT of W(m).
-
Replace w(0), the first w(m) time sample, with w(0)/2.
-
Append that new w(0) sample value to the end of the N-point w(m) sequence, w(M-1) = w(0), creating the desired M-length window sequence w(k) where time index k is 0 ≤ k ≤ (M-1).
-
Normalize the amplitude of w(k), to obtain a unity peak amplitude, by dividing each sample of w(k) from Step 8 by the maximum sample value in w(k).
The above procedure seems a bit involved but it's not really so bad, as the following Chebyshev window design example will show. Assume we need a 9-sample Chebyshev window function whose frequency-domain sidelobes are -60 dB below the window's mainlobe level. Given those requirements; M = 9, N = 8, γ = 3, and
a = cosh[cosh-1(103)/8] = 1.4863.
After the inverse DFT operation in the above Step 6, w(m=0)/2 = 11.91, thus we set w(k=0) = w(k=8) = 11.91. The maximum value of w(k) is 229.6323, so we divide w(k) by that value yielding our final normalized 9-sample Chebyshev window sequence listed in the rightmost column of Table 1.
Table 1 Nine-point Chebyshev window computations
m |
A(m) |
W(m) |
w(m) |
k |
w(k) |
w(k) norm. |
0 |
1.4863 |
1000.00 |
23.8214 |
0 |
11.910 |
0.0519 |
1 |
1.3732 |
-411.49 |
52.1550 |
1 |
52.1550 |
0.2271 |
2 |
1.0510 |
6.41 |
123.5232 |
2 |
123.5232 |
0.5379 |
3 |
0.5688 |
-0.13 |
197.5950 |
3 |
197.5950 |
0.8605 |
4 |
0.0000 |
1.00 |
229.6323 |
4 |
229.6323 |
1.0000 |
5 |
-0.5688 |
-0.13 |
197.5950 |
5 |
197.5950 |
0.8605 |
6 |
-1.0510 |
6.41 |
123.5232 |
6 |
123.5232 |
0.5379 |
7 |
-1.3732 |
-411.49 |
52.1550 |
7 |
52.1550 |
0.2271 |
|
8 |
11.910 |
0.0519 |
Acknowledgement: I thank DSP guru fredric j. harris (San Diego State Univ.) for his generous personal guidance in helping me create this procedure.
Further Reading: I ran across an interesting website that discusses evaluating Chebyshev polynomials, and computing Chebyshev window sequences in conjunction with designing FIR filters. That website is the paper: "Notes of the Design of Optimal FIR Filters" by John R. Treichler at: http://www.appsig.com/products/tn070.htm
2011 Update: Due to the terrific comments generated by my original blog in January 2008, later that year I added the absolute-value modulus bars (|) in Step 4 for people using inverse hyperbolic cosine software that does not accommodate complex arguments. That change, however, requires us to make another change. If you use the absolute-value bars in Step 4, and M is an even number, then change the sign of the last M/2-1 W(m) samples from Step 5. For example, if M = 32 then Step 5's W(m) has 31 samples and the last 15 of those 31 samples should be negated before preceeding to Step 6.
Copyright © 2008, Richard Lyons, All Rights Reserved
- Comments
- Write a Comment Select to add a comment
Thanks Rick. It is like magic for me after long day searching how to write math expression for Dolph Chebyshev window. Even in Matlab document and Harris 1978 paper, there is frequency domain expression but it is difficult to write exact Dolph Chebysev filter program based on that. This post has helped me in my UFMC work. Thank you again.
Hello vikasindia.
You are most welcome.
To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.
Please login (on the right) if you already have an account on this platform.
Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: