def direct_shift(x, a, period=None): n = len(x) if period is None: k = fftfreq(n) * 1j * n else: k = fftfreq(n) * 2j * pi / period * n return ifft(fft(x) * exp(k * a)).real
def test_definition(self): x = [0, 1, 2, 3, 4, -4, -3, -2, -1] assert_array_almost_equal(9 * fftfreq(9), x) assert_array_almost_equal(9 * pi * fftfreq(9, pi), x) x = [0, 1, 2, 3, 4, -5, -4, -3, -2, -1] assert_array_almost_equal(10 * fftfreq(10), x) assert_array_almost_equal(10 * pi * fftfreq(10, pi), x)
def direct_itilbert(x, h=1, period=None): fx = fft(x) n = len(fx) if period is None: period = 2 * pi w = fftfreq(n) * h * 2 * pi / period * n w = -1j * tanh(w) return ifft(w * fx)
def direct_tilbert(x, h=1, period=None): fx = fft(x) n = len(fx) if period is None: period = 2 * pi w = fftfreq(n) * h * 2 * pi / period * n w[0] = 1 w = 1j / tanh(w) w[0] = 0j return ifft(w * fx)
def direct_diff(x, k=1, period=None): fx = fft(x) n = len(fx) if period is None: period = 2 * pi w = fftfreq(n) * 2j * pi / period * n if k < 0: w = 1 / w**k w[0] = 0.0 else: w = w**k if n > 2000: w[250:n - 250] = 0.0 return ifft(w * fx).real
def direct_hilbert(x): fx = fft(x) n = len(fx) w = fftfreq(n) * n w = 1j * sign(w) return ifft(w * fx)