首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >改变NumPy FFT的起始点

改变NumPy FFT的起始点
EN

Stack Overflow用户
提问于 2020-05-06 01:53:17
回答 1查看 205关注 0票数 0

我对NumPy的FFT有困难。我不想让曲线像图像中所显示的那样在末端迅速上升。就好像它被固定在股票的平均价格上。

代码语言:javascript
运行
复制
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()

这给出了以下情节:

正如你可以看到的曲线跳到他们开始的地方,无论最初的价格。下面是我的原始教程:https://pythonawesome.com/using-the-latest-advancements-in-ai-to-predict-stock-market-movements/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 04:54:00

FFT的基向量都是圆的,因此减少的基向量不容易表示阵列末端到起始点之间的尖锐不连续。您可以尝试通过在每一端镜像数据和/或在FFT之前消除数据趋势来消除某些跳转,以减少一些不连续性。

添加:

DCT方法是简单地复制数据与其镜像(例如,以反向顺序),并使用双长度快速傅立叶变换。处理完后,把多余的样品扔掉。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61626022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档