Numpy FFT无法获得预期的结果

时间:2018-11-29 22:55:16

标签: python numpy fft

所以我有一辆以三种不同正弦波(我知道它们的单个频率)之和的速度行驶的汽车。我用以下内容构造了这个 velocity time graph

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv('drivingdata.csv') # velocity values
s = df['leadspeed'].values # transform csv col into array
t = np.linspace(0, 1, 5067)
plt.ylabel("Amplitude")
plt.xlabel("Time[s]")
plt.plot(t, s)
plt.show()

这很好,然后使用以下numpy函数对此数据执行FFT:

T = t[1]-t[0] # sample rate
N = s.size
fft = np.fft.fft(s)
f = np.linspace(0, 1//T, N) # 1/T is the frequency 

plt.ylabel("Amplitude")
plt.xlabel("Frequency [Hz]")

plt.bar(f[:N // 2], np.abs(fft)[:N // 2] * 1 // N) # 1/N is a normalization factor
plt.show()

然后我得到了这个amplitude vs frequency graph。如何“放大”以便确认我的初始频率(均在0.2以下)?

我对fft完全陌生,因此提出批评/帮助将不胜感激。

编辑:

我遵循了您的有益建议Cris Luengo,这是my new graph。我输入到电波中的频率分别为0.033、0.083和0.117,所以我仍然没有找到答案。

编辑2: 抱歉,克里斯。干得好。我正在寻找的频率刚好在0附近吗?有没有办法“放大”? New graph

0 个答案:

没有答案