Skip to content

SDFT

Sliding Discrete Fourier Transform (SDFT).

Initially, the coefficients are all equal to 0, up until enough values have been seen. A call to numpy.fft.fft is triggered once window_size values have been seen. Subsequent values will update the coefficients online. This is much faster than recomputing an FFT from scratch for every new value.

Parameters

  • window_size

    The size of the window.

Attributes

  • window_size

Examples

import numpy as np
from river import misc

X = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

window_size = 5
sdft = misc.SDFT(window_size)

for i, x in enumerate(X):
    sdft = sdft.update(x)

    if i + 1 >= window_size:
        assert np.allclose(sdft.coefficients, np.fft.fft(X[i+1 - window_size:i+1]))

Methods

update