我正在复制作者在研究论文中报告的结果。在其中他采用STFT的EEG信号。输入数据的形状为(1 X500),我使用了Scipy库内置函数来计算STFT,输出的形状为(257 x32) (6-13 Hz)和(17-30 Hz)两个频段之间的数据。作者报告提取的频带大小为(16 X 32)和(23 X 32),但是在任何设置下,我都无法获得此频率分辨率。我尝试与作者联系,但到目前为止没有任何回应。我希望你们中的一些人可以指引我正确的方向。 非常感谢。
wlen=64
nfft=1024
temp=S1_769_test[3,0,:]
win=signal.get_window(window='blackman',Nx=wlen, fftbins=True)
f, t, Zxx = signal.stft(temp,fs=500,window=win,noverlap=50,nfft=nfft,nperseg=wlen,
boundary=None,padded=False,return_onesided=True)
dat=np.abs(Zxx)/250
if (nfft % 2): # odd nfft excludes Nyquist point
dat[2:,:] = dat[2:,:]*2
else: # even nfft includes Nyquist point
dat[2:-1,:]= dat[2:-1,:]*2
band1=np.where((f >= 6) & (f <=13))
band2=np.where((f >= 17) & (f <=30))
extracted1=np.squeeze(dat[band1,:])
extracted2=np.squeeze(dat[band2,:])
extracted2 = cv2.resize(extracted2, dsize=(32,15), interpolation=cv2.INTER_CUBIC)
Combined=np.vstack([extracted1,extracted2])
print (len(band2[0]))
print (len(band1[0]))