EEG信号FFT处理函数 - ef FFT_Processing
该函数实现了对EEG信号的FFT处理,将处理后的数据存储在一个numpy数组中,并保存为.npy文件。
参数说明:
- sub:字符串类型,表示要处理的被试编号。
- channel:列表类型,表示要处理的通道索引。
- band:列表类型,表示要处理的频带。
- window_size:整型,表示FFT处理的窗口大小。
- step_size:整型,表示FFT处理的步长。
- sample_rate:整型,表示采样率。
返回值:无。
函数实现:
- 打开数据文件,读取指定被试的数据。
- 循环处理40次试验,每次处理一次试验的数据。
- 对于每次试验的数据,从开始位置循环到结束位置,每次处理一个窗口大小的数据。
- 对于每个通道,使用pe.bin_power函数对数据进行FFT处理,得到指定频带的功率值(theta, alpha, low beta, high beta, gamma)。
- 将处理后的数据存储在一个numpy数组中,并保存为.npy文件。
def ef_FFT_Processing(sub, channel, band, window_size, step_size, sample_rate):
'''
arguments:
string subject
list channel indice
list band
int window size for FFT
int step size for FFT
int sample rate for FFT
return:
void
'''
meta = []
with open('C:/Users/faizan/Downloads/data_preprocessed_python/data_preprocessed_python/s' + sub + '.dat', 'rb') as file:
subject = pickle.load(file, encoding='latin1') #resolve the python 2 data problem by encoding : latin1
for i in range (0,40):
# loop over 0-39 trails
data = subject['data'][i]
labels = subject['labels'][i]
start = 0;
while start + window_size < data.shape[1]:
meta_array = []
meta_data = [] #meta vector for analysis
for j in channel:
X = data[j][start : start + window_size] #Slice raw data over 2 sec, at interval of 0.125 sec
Y = pe.bin_power(X, band, sample_rate) #FFT over 2 sec of channel j, in seq of theta, alpha, low beta, high beta, gamma
meta_data = meta_data + list(Y[0])
meta_array.append(np.array(meta_data))
meta_array.append(labels)
meta.append(np.array(meta_array))
start = start + step_size
meta = np.array(meta)
np.save('C:/Users/faizan/Downloads/data_preprocessed_python/data_preprocessed_python/s' + sub, meta, allow_pickle=True, fix_imports=True)
原文地址: https://www.cveoy.top/t/topic/m5Qo 著作权归作者所有。请勿转载和采集!