EEG数据的频率电压图 - Python中的FFT

时间:2017-02-23 11:11:50

标签: python fft

我有点不确定如何处理这个,因为它是一个对我来说不熟悉的主题,所以对我的代码的任何指导都将非常感激。我有一组eeg记录(18949个EEG记录,采样率为500Hz,其中记录为nV)。我试图从数据中创建频率对电压图,但到目前为止我还没有运气。

我的代码如下:

data = pd.read_csv('data.csv')
data = data['O1']
Fs = 500.0
Ts = 1.0/Fs
t = np.arange(len(data)) / Fs

n = len(data) # length of the signal
k = np.arange(n)
T = n/Fs
frq = k/T # two sides frequency range
frq = frq[range(int(n/2))]

Y = np.fft.fft(data)/n
Y = Y[range(int(n/2))]

fig, ax = plt.subplots(2, 1)
ax[0].plot(t,data)
ax[0].set_xlabel('Time')
ax[0].set_ylabel('Voltage')
ax[1].plot(frq,abs(Y),'r')
ax[1].set_xlabel('Freq (Hz)')

plt.draw()
plt.show()

fig.savefig("graph.png")

我的结果图如下所示:

Graph

有人可以提供一些关于我可能在哪里出错的指导吗?

1 个答案:

答案 0 :(得分:1)

您的信号在时域中具有相当大的(至少相对于其他信号变化)DC偏移。在频域中,这将被绘制为0Hz的强线(由曲线轴隐藏),然后其他频率分量的幅度相对于0接近0。

为了获得更好的可视化效果,您应该使用公式20*log10(abs(Y))Decibels (dB)中绘制频谱,这样您就可以看到其他频率成分。