我从EEG信号表中构建了一个矩阵,并从该矩阵中导出了一个数组。这个数组的形状为(4097*100),但是当我将这个数组传递给数组Stockwell变换函数时,我得到了一个错误:元组索引超出范围
#data1 = np.asarray(matrix)matrix.shape (4097, 100)tfr = tfr_array_stockwell(matrix,173)IndexError Traceback (most recent call last) <ipython-input-78-abab5d5223f4> in <module> 1 #data1 = np.asarray(matrix) 2 ----> 3 tfr = tfr_array_stockwell(matrix,173)~/.local/lib/python3.6/site-packages/mne/time_frequency/_stockwell.py in tfr_array_stockwell(data, sfreq, fmin, fmax, n_fft, width, decim, return_itc, n_jobs) 170 """ 171 n_epochs, n_channels = data.shape[:2]--> 172 n_out = data.shape[2] // decim + bool(data.shape[2] % decim) 173 data, n_fft_, zero_pad = _check_input_st(data, n_fft) 174
IndexError: tuple index out of range
回答:
看起来它期望一个3D数组,分别是(epochs, channels, time)(你提供的是一个2D数组)。尽管文档字符串中说:
要转换的信号。只要最后一个维度是时间,支持任何维度。
… 代码似乎表达了不同的要求。
我对EEG数据的了解不足以说更多,但这可能给你提供了一些关于问题的线索。如果没有帮助,我建议你尝试这样做:
tfr = tfr[None, :, :]
以添加一个单一的’epoch’维度(假设tfr
的最后一个轴已经是时间)。