基于脑电数据的频率-电压图——Python中的FFT

基于脑电数据的频率-电压图——Python中的FFT,python,fft,Python,Fft,我有点不确定如何处理这个问题,因为这是一个对我来说很新的话题,所以任何关于我的代码的指导都将不胜感激。我有一组脑电图记录(18949个脑电图记录,采样率为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) #

我有点不确定如何处理这个问题,因为这是一个对我来说很新的话题,所以任何关于我的代码的指导都将不胜感激。我有一组脑电图记录(18949个脑电图记录,采样率为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")
我的结果图如下所示:


有没有人能提供一些指导,说明我的错误在哪里?

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

为了更好地可视化,您应该使用公式
20*log10(abs(Y))
绘制频谱,这样您就可以实际看到其他频率分量