我仍然试图在Python中使用FFT对此data进行频率分析。 采样率是每分钟1个数据点。使用Python的FFT - 意外的低频
我的代码是:
from scipy.fftpack import fft
df3 = pd.read_csv('Pressure - Dates by Minute.csv', sep=",", skiprows=0)
df3['Pressure FFT'] = df3['ATMOSPHERIC PRESSURE (hPa) mean'] - df3['ATMOSPHERIC PRESSURE (hPa) mean'].mean()
Pressure = df3['Pressure FFT']
Fs = 1/60
Ts = 1.0/Fs
n = len(Pressure)
k = np.arange(n)
T = n/Fs
t = np.arange(0,1,1/n) # time vector
frq = k/T # two sides frequency range
frq = frq[range(int(n/2))] # one side frequency range
Y = np.fft.fft(Pressure)/n # fft computing and normalization
Y = Y[range(int(n/2))]
fig, ax = plt.subplots(2, 1)
ax[0].plot(t,Pressure)
ax[0].set_xlabel('Time')
ax[0].set_ylabel('Amplitude')
ax[1].plot(frq,abs(Y),'r') # plotting the spectrum
ax[1].set_xlabel('Freq (Hz)')
ax[1].set_ylabel('|Y(freq)|')
但结果得出:
所以我的问题是:
1)为什么没有频率呢?数据显然是周期性的。
2)为什么频谱如此之低? (0 - 0.009)
3)也许我应该尝试不同的过滤技术?
任何见解?
谢谢!
由FFT函数返回的数组中的第一项具有DC分量,即原始数组中的所有值的总和。这通常比周期性分量大几个数量级。在绘图之前尝试绘制'Y [1:]'或绘制'Y [0] = 0',您应该看到您的频率出现。 – Jaime
我试图在绘制之前先做Y [0] = 0,但仍然没有频率。也许这是正常化?因为周期性行为是一天两次。 – ValientProcess
通常,您要使用对数刻度绘制Y轴。您还忘了在FFT之前应用合适的窗口功能。 –