Computing Chebyshev Window Sequences
Chebyshev windows (also called DolphChebyshev, 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 userdefined 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 Msample symmetrical Chebyshev window sequences:

If the desired Chebyshev window sequence length is M, then define integer N = M1.

Define the window's sidelobelevel control parameter as γ.The window's sidelobe levels, relative to the mainlobe peak, will be 20g dB. (Thus, for example, if we desire frequencydomain 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 Nlength sequence A(m) using
A(m) = α•cos(πm/N)
where the index m is 0 ≤ m ≤ (N1).

For each m, evaluate the Nthdegree Chebyshev polynomial whose argument is A(m) to generate a frequencydomain 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 realonly, although our software's computational numerical errors may produce a complexvalued 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 frequencydomain index m is never less than zero.

Compute a preliminary timedomain window sequence, w(m), using
w(m) = real part of the Npoint 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 Npoint w(m) sequence, w(M1) = w(0), creating the desired Mlength window sequence w(k) where time index k is 0 ≤ k ≤ (M1).

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 9sample Chebyshev window function whose frequencydomain sidelobes are 60 dB below the window's mainlobe level. Given those requirements; M = 9, N = 8, γ = 3, and
a = cosh[cosh^{1}(10^{3})/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 9sample Chebyshev window sequence listed in the rightmost column of Table 1.
Table 1 Ninepoint 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 absolutevalue 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 absolutevalue bars in Step 4, and M is an even number, then change the sign of the last M/21 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
Previous post by Rick Lyons:
Spectral Flipping Around Signal Center Frequency
Next post by Rick Lyons:
A Simple Complex Downconversion Scheme
 Comments
 Write a Comment Select to add a comment
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.
Registering will allow you to participate to the forums on ALL the related sites and give you access to all pdf downloads.