我有点不确定如何处理这个问题,因为这对我来说是一个新的话题,所以我的代码的任何指导都将非常感谢。我有一组脑电图记录(18949条脑电图记录,采样率为500 nV,记录格式为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")我的结果图看起来像这样:

有没有人能提供一些指导,说明我在这方面可能出了什么问题?
发布于 2017-02-24 10:25:26
你的信号在时域上有相当大的直流偏移(至少相对于其他信号的变化)。在频域中,这将被绘制为0 0Hz处的一条强线(它被曲线图的轴隐藏),那么其他频率分量的振幅相对来说接近于0。
为了获得更好的可视化效果,您应该使用公式20*log10(abs(Y))在Decibels (dB)中绘制频谱,这样您就可以实际看到其他频率分量。
https://stackoverflow.com/questions/42414114
复制相似问题