Sliding DFT

In applied mathematics, the sliding discrete Fourier transform is a recursive algorithm to compute successive STFTs of input data frames that are a single sample apart (hopsize − 1). The calculation for the sliding DFT is closely related to Goertzel algorithm.

Definition
Assuming that the hopsize between two consecutive DFTs is 1 sample, then

$$ \begin{align} F_{t+1}(n) &= \sum_{k=0}^{N-1} f_{k+t+1}e^{-j2\pi k n/N}\\ &= \sum_{m=1}^N f_{m+t}e^{-j2\pi (m-1) n/N} \\ &= e^{j2\pi n/N} \left[ \sum_{m=0}^{N-1} f_{m+t}e^{-j2\pi m n /N} - f_t + f_{t+N} \right] \\ &= e^{j2\pi n/N} \left[F_t(n) - f_t + f_{t+N} \right]. \end{align} $$

From this definition above, the DFT can be computed recursively thereafter. However, implementing the window function on a sliding DFT is difficult due to its recursive nature, therefore it is done exclusively in a frequency domain.

Sliding windowed infinite Fourier transform
It is not possible to implement asymmetric window functions into sliding DFT. However, the IIR version called sliding windowed infinite Fourier transform (SWIFT) provides an exponential window and the αSWIFT calculates two sDFTs in parallel where slow-decaying one is subtracted by fast-decaying one, therefore a window function of $$w(x) = e^{-x \alpha} - e^{-x \beta}$$.