Sliding DFT
![]() | This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
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).[1] The calculation for the sliding DFT is closely related to Goertzel algorithm.[citation needed]
Definition
Assuming that the hopsize between two consecutive DFTs is 1 sample, then[2]
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.[3]
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 .[4]
Another way to obtain higher-order ones is to cascade SWIFT in series, similar to ones for IIR filters. The obtained windowing function is , where the "order" parameter is number of cascades.[4]
Caveats
This section needs additional citations for verification. (January 2023) |
Unlike other FFT algorithms and like IIR filters, the sliding DFT requires contiguous stream of data, which is not always possible. However, there's is a way to calculate sliding DFT where the stream of data is not contiguous (e.g. in foobar2000 visualizations) is use of where playbackTime is the current playback time and previousPlaybackTime is the playback time at the time of the calculation, both in samples (or in milliseconds, which requires conversion from ms to samples) to calculate the length needed to cover new data while avoiding old data that are already covered by previous sDFT calculations, but again, this is not always possible.[citation needed]
Moreover, due to recursive nature, there are numerical stability (especially on applications with integers or fixed-point arithmetic) issues because the poles of IIR filters are very close to the unit circle, so why damping parameter exists to force poles to go inside the unit circle.[5]
References
- ^ Bradford, Russell (2005). "SLIDING IS SMOOTHER THAN JUMPING" (PDF). Proceedings ICMC 2005.
- ^ Lazzarini, Victor (2021). Spectral Music Design. Oxford Univ. Press.
- ^ Rafii, Zafar (14 November 2018). "Sliding Discrete Fourier Transform with Kernel Windowing". IEEE Signal Processing Magazine. 35 (6). doi:10.1109/MSP.2018.2855727.
- ^ a b Grado, Logen L.; Johnson, Matthew D.; Netoff, Theoden I. (6 September 2017). "The Sliding Windowed Infinite Fourier Transform": 2. doi:10.1109/MSP.2017.2718039. Retrieved 3 February 2023.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Jacobsen, Eric. "Understanding and Implementing the Sliding DFT". dsprelated.com. The Related Media Group. Retrieved 14 January 2023.