aspcore.fouriertransform.czt

aspcore.fouriertransform.czt(time_sig, M, w=None, a=1 + 0j)

The Chirp-z Transform

The chirp z transform is a generalization of the DFT, where the chirp z transform can be computed for a larger set of z values in the complex plane. The DFT corresponds to equal values on the unit circle.

Parameters:
  • time_sig (np.ndarray of shape (..., N)) – The time signal to be transformed. The transform is applied to the last axis

  • M (int) – The number of frequency bins to compute.

  • w (complex, optional) – The complex number to use as the base for the frequency bins. If not specified, the default is exp(2j*pi/M), which correponds to equally spaced valued around the unit circle. This is the same as the DFT.

  • a (complex, optional) – The starting point for the chirp z transform. The default is 1+0j, which corresponds to the DFT.

Returns:

The chirp z transform of the input signal. The first axis corresponds to the frequency bins, and the remaining axes correspond to the input shape.

Return type:

np.ndarray of shape (M, …)

Notes

Implemented using a matrix multiplication approach, which has O(n^2) complexity, analogous to computing the DFT using the DFT matrix.

The chirp z transform is defined as X_k = sum_{n=0}^{N-1} x_n * A^{-n} * W^{nk} or written as a matrix multiplication X = W A x where A is a N x N diagonal matrix with A^{-n} on the diagonal, and W is a MxN matrix with the elements (W)_{mn} = W^{mn}.

References

[SukhoyGeneralizing2019]