Python 更改NumPy和x27的起点;s FFT

Python 更改NumPy和x27的起点;s FFT,python,numpy,fft,Python,Numpy,Fft,我对NumPy的FFT有问题。我不希望曲线在末端像图中所示那样向上延伸。它几乎就像是固定在股票价格的平均价格 close_fft = np.fft.fft(np.asarray(data_FT['Adj Close'].tolist())) fft_df = pd.DataFrame({'fft':close_fft}) fft_df['absolute'] = fft_df['fft'].apply(lambda x: np.abs(x)) fft_df['angle'] = fft_df['

我对NumPy的FFT有问题。我不希望曲线在末端像图中所示那样向上延伸。它几乎就像是固定在股票价格的平均价格

close_fft = np.fft.fft(np.asarray(data_FT['Adj Close'].tolist()))
fft_df = pd.DataFrame({'fft':close_fft})
fft_df['absolute'] = fft_df['fft'].apply(lambda x: np.abs(x))
fft_df['angle'] = fft_df['fft'].apply(lambda x: np.angle(x))

plt.figure(figsize=(14, 7), dpi=100)
fft_list = np.asarray(fft_df['fft'].tolist())
for num_ in [3, 6, 9, 100]:
    fft_list_m10= np.copy(fft_list); fft_list_m10[num_:-num_]=0
    plt.plot(np.fft.ifft(fft_list_m10), label='Fourier transform with {} components'.format(num_))
plt.plot(data_FT['GS'],  label='Real')
plt.xlabel('Days')
plt.ylabel('USD')
plt.title('Figure 3: Goldman Sachs (close) stock prices & Fourier transforms')
plt.legend()
plt.show()
这给出了以下曲线图:

正如你所看到的,无论最初的价格是多少,曲线都会跳到起点。下面是我的原始教程:
FFT的基向量都是圆形的,因此减少基向量的数量不容易表示阵列末端和开始之间的尖锐不连续性。您可以尝试通过镜像每一端的数据,和/或在FFT之前对数据进行去趋势处理,以减少一些不连续性,从而消除一些跳跃

增加:

DCT方法是简单地用镜像复制数据(例如,按相反顺序),并使用双倍长度FFT。加工完后扔掉多余的样品


去趋势法可以使用线性趋势,也可以使用极低阶多项式的线性回归拟合。减去拟合的趋势,然后进行FFT并进行处理。然后,在处理后,如果需要,将拟合的趋势线添加回去。

FFT的基向量都是圆形的,因此减少的基向量数量不容易表示阵列末端和开始之间的尖锐不连续性。您可以尝试通过镜像每一端的数据,和/或在FFT之前对数据进行去趋势处理,以减少一些不连续性,从而消除一些跳跃

增加:

DCT方法是简单地用镜像复制数据(例如,按相反顺序),并使用双倍长度FFT。加工完后扔掉多余的样品


去趋势法可以使用线性趋势,也可以使用极低阶多项式的线性回归拟合。减去拟合的趋势,然后进行FFT并进行处理。然后在处理后,根据需要添加拟合的趋势线。

FFT基于信号是周期性的假设,因此您看到的是预期的。FFT基于信号是周期性的假设,因此您看到的是预期的。好主意!我将获取我的数据集,并得到一个之前的接近的差异,希望这将给我一个不那么紧张的情节。我会试一试,然后在今晚晚些时候更新。好主意!我将获取我的数据集,并得到一个之前的接近的差异,希望这将给我一个不那么紧张的情节。我会试一试,然后在今晚晚些时候更新。