我正在尝试使用numpy fft来绘制来自数据帧的一些数据:
plt.plot(np.fft.fft(df_valid_daily_activity.stepsDaily))我明白了:

我不明白为什么剧情在一开始是如此陡峭,然后似乎趋于稳定?我还收到了这样的警告:
Casting complex values to real discards the imaginary part
return array(a, dtype, copy=False, order=order)我尝试绘制的数据示例:
2 12693.0
3 18387.0
4 18360.0
5 11684.0
6 12722.0
...
273 27836.0
274 15566.0
280 7836.0
281 17787.0
284 7739.0
Name: stepsDaily, Length: 199, dtype: float64 你知道为什么吗?谢谢!
编辑:尝试减去均值-看起来仍然很奇怪

发布于 2020-08-14 00:11:01
您正在使用的函数是一个完全复数的傅立叶变换:当应用于实际数据时,它将对称为零。您可以做两件事:使用np.fft.fftshift将数据移位,使零频率位于中间(或者使用np.fft.fftfreq计算频率),或者使用np.fft.rfft,这是对实际数据的转换,将返回完整FFT的一半。
如果能知道你对FFT的预期用途,那就太好了。大多数人(包括我自己)实际上只对数据中存在的频率感兴趣。为此,可以使用FFT的幅值平方(通常在对数刻度上)的曲线图。
发布于 2020-08-14 00:58:57
我想发表评论,但因为我的名声,我不能:)
我想你应该尝试一下logscale图。首先,建议使用numpy.fft.fftshift“将零频率分量移到频谱的中心”。
import random
import matplotlib.pyplot as plt
import numpy as np
f = [random.randint(5000, 20000) for i in range(300)]
ff = np.fft.fftshift(f)现在以“semilogx”、“semilogy”和“loglog”比例绘制:
https://stackoverflow.com/questions/63395565
复制相似问题