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 check_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)