Sampling rate F_s = 1000 Hz, N = 256 samples, CZT output M = 256 bins. Input signal: x[n] = sin(2 pi f_1 n / F_s) + sin(2 pi f_2 n / F_s).
While paused, move the sliders to update the result instantly.
Time signal (top), CZT contour on the z-plane (left), full-band DFT with the sweeping zoom window (top right), and the CZT zoom that resolves the close peaks (bottom right). The zoom window sweeps automatically.
The Chirp-Z transform (CZT) is a generalised DFT that samples the Z-plane along a logarithmic spiral at M points:
$$X[k] = \sum_{n=0}^{N-1} x[n]\,A^{-n}\,W^{nk}, \qquad k = 0,1,\dots,M-1$$with $A = A_0 e^{j\theta_0}$ and $W = W_0 e^{-j\phi_0}$. For a Zoom-DFT we choose:
$$A = e^{j\,2\pi f_\text{start}/F_s}, \qquad W = e^{-j\,2\pi (f_\text{end}-f_\text{start})/(M\,F_s)}$$which places M evenly spaced bins across $[f_\text{start}, f_\text{end}]$. The plain DFT splits $0..F_s/2$ into N bins, so the resolutions are:
$$\Delta f_\text{DFT} = \frac{F_s}{N}, \qquad \Delta f_\text{CZT} = \frac{f_\text{end}-f_\text{start}}{M}$$With the defaults (F_s=1000, N=M=256, f_start=90, f_end=120) the DFT has 3.91 Hz/bin while the CZT has 0.117 Hz/bin — about 33x finer.