我有大约64通道的EEG数据,采样频率为256 at,我试图对每个通道进行时频分析,并绘制一个谱图。
数据存储在NumPy 3d阵列中,其中一个维度的长度为256,每个元素包含一个在所有采样时间点上的微伏特读取(每个数据通道的总长度为1秒)。
需要澄清的是:我的3D阵列是64_256_913 (电极*电压*试用)。这个试验只是一个实验的单一试验。所以我想做的是,从一次试验中取一个电极,整个一维电压矢量,并创建一个时频谱图。所以我想要创建一个来自data0,:,0的光谱图。
对于每个电极,我想要一个图,其中y轴是频率,x轴是时间,颜色/强度是功率。
我尝试在python中使用它:
from matplotlib.pyplot import specgram
#data = np.random.rand(256)
specgram(data, NFFT=256, Fs=256)这给了我看上去像这样的东西

在我看来,这是不正确的,因为轴线范围是不正确的。
此外,当我对所有EEG通道运行相同的代码时,对我的所有数据,我最终得到的是完全相同的图(尽管我已经验证了每个数据是不同的)。
我对信号处理非常陌生,我是否在数据的布局方式或如何使用我的功能方面出了问题?
发布于 2015-08-07 20:07:58
来自文档的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长度段,并计算每一段的频谱。将窗口函数窗口应用于每个段,并指定每个段的重叠量。该光谱图被绘制成一个彩色地图(使用imshow)。 x:一维数组或序列数组或包含数据的序列
看起来你的问题是你没有传递一维数据。尝试:
from matplotlib.pyplot import specgram
specgram(data.flatten(), NFFT=256, Fs=256)https://stackoverflow.com/questions/31876313
复制相似问题