首页 文章

Python - 时间频谱图

提问于
浏览
2

我有一些64通道EEG数据以256Hz采样,我正在尝试对每个通道进行时间频率分析并绘制频谱图 .

数据存储在numpy 3d数组中,其中一个维度的长度为256,每个元素包含所有采样时间点的微伏读数(每个数据通道的总长度为1秒) .

要清楚:我的3D阵列是64 * 256 * 913(电极电压试验) . 试验只是一个实验的单一试验 . 所以我想做的是从单次试验中获取单个电极,以及整个1D电压矢量并创建时频谱图 . 所以我想从数据[0,:,0]创建一个谱图 .

对于每个电极,我想要一个图,其中y轴是频率,x轴是时间,颜色/强度是功率

我试过在python中使用它:

from matplotlib.pyplot import specgram
#data = np.random.rand(256)
specgram(data, NFFT=256, Fs=256)

这给了我一些看起来像这样的东西:

enter image description here

马上就看起来不对,因为轴范围不正确

此外,当我为所有EEG通道运行相同的代码时,在我的所有数据上,我最终得到完全相同的图(即使我已经验证每个数据的数据不同)

我对信号处理很陌生,是不是在我的数据布局方式或我如何使用我的功能时出错?

1 回答

  • 0

    来自documentationspecgram 函数:

    绘制频谱图 . 调用签名:specgram(x,NFFT = 256,Fs = 2,Fc = 0,detrend = mlab.detrend_none,window = mlab.window_hanning,noverlap = 128,cmap = None,xextent = None,pad_to = None,sides =' default',scale_by_freq = None,mode ='default',scale ='default',** kwargs)计算并绘制x中的数据谱图 . 将数据分成NFFT长度段,并计算每个部分的频谱 . 窗口函数窗口应用于每个段,并且使用noverlap指定每个段的重叠量 . 谱图被绘制为色图(使用imshow) . x:1-D数组或序列包含数据的数组或序列

    看起来您的问题是您没有传递一维数据 . 尝试:

    from matplotlib.pyplot import specgram
    specgram(data.flatten(), NFFT=256, Fs=256)
    

相关问题