The Chirp Z-Transform

Let \(X \in \mathbb{C}^{N}\).

The length-\(M\) Chirp Z-Transform \(\text{CZT}_{N}^{M}\{X\} \in \mathbb{C}^{M}\) of parameters \(A, W \in \mathbb{C}^{*}\) is defined as:

\[\text{CZT}_{N}^{M}\{ X \}[k] = \sum_{n = 0}^{N - 1} X[n] A^{-n} W^{n k}, \qquad k \in \{ 0, \ldots, M - 1 \}.\]

\(\text{CZT}_{N}^{M}\) can be efficiently computed using \(\text{(i)DFT}\) in \(\mathcal{O}(L \log L)\) operations, where \(L \ge N + M - 1\) can be arbitrarily chosen.

For a \(D\)-dimensional Chirp Z-Transform, namely a \((M_1, M_2, \ldots, M_D)\) length transform of \(X \in \mathbb{C}^{N_1 \times N_2 \times \cdots \times N_D}\), the above operation can be performed one dimension at a time.

Implementation Notes

czt() can be used to compute \(\text{CZT}_{N}^{M}\) as defined above, with \(L \ge N + M - 1\) optimally chosen.

cztn() can be used to compute \(\text{CZT}_{N_1, N_2, \ldots, N_D}^{M_1, M_2, \ldots, M_D}\), with \(L_d \ge N_d + M_d - 1\) optimally chosen for \(d = 1, 2, \ldots, D\). In our implementation, we opt for a more efficient approach than applying the 1D \(\text{CZT}\) along each dimension.