目录
1.数据来源
本实验数据来自physionet中的Sleep-EDF睡眠数据库,包含197个整夜多导睡眠图(PSG)数据。地址如下:
Sleep-EDF Database Expanded v1.0.0
数据库截图:
其中PSG为受试者整夜多导睡眠图记录,包括Fpz-cz和Pz-oz两个通道的EEG、EOG、EMG和体温数据;Hypnogram为专家对受试者睡眠分期的结果
2.更新标签
原数据标签是按照阶段变化进行分期,不便于后续处理,因此对该数据标签按30s时间间隔进行更新。
1.以记事本方式打开Hypnogram文件
2.整理文件内容
将‘’替换为‘ ’,‘Sleep stage W’替换为‘0’,‘Sleep stage 1’替换为‘1’,‘Sleep stage 2’替换为‘2’;‘Sleep stage 3’替换为‘3’,‘Sleep stage 4’替换为‘4’,‘Sleep stage R’替换为‘5’;‘Sleep stage ?’替换为‘ ’,并删除该阶段前两个数据。
整理完后,将数据另存为.txt格式文件。
3.在matlab中更新标签
>> label=importdata('C:\Users\Administrator\Desktop\脑电信号处理\预处理\贴标签\Hypnogram(.txt)\SC4001EC-process.txt');
>> label_new=eeg_edf_datatransfer(label);
>> save('C:\Users\Administrator\Desktop\脑电信号处理\预处理\贴标签\label(.mat)\SC4001EC_label.mat','label_new');
附录:标签更新函数
% 将Sleep-EDF中的Hypnogram标签按每30s为间隔时间进行标签细化
% Hypnogram格式为当前时刻时间(s),该时期持续长度(s),该时期专家分类结果(0~5)
function eeg_stage = eeg_edf_datatransfer( eeg_data )
clc = length(eeg_data)/3-1; % matlab索引从0开始
eeg_duration(1:clc) = 0; % 不同时期持续时长
eeg_annotation_data(1:clc) = 0; % 不同时期标签数据
% 处理原标签中每个时期
for i = 0:1:clc
eeg_duration(i+1) = eeg_data(2 + 3*i); % 第i个时期持续时长,为2+3*i(s)
eeg_annotation_data(i+1) = eeg_data(3 + 3*i); % 第i个时期标签,为3+3*i(s)
end
eeg_duration_div = eeg_duration ./ 30; % 将每个时期按30s一段划分
eeg_annotation_data_len = length(eeg_annotation_data); % 原标签数
eeg_stage_i = 0; % 新标签
%为新时期添加标签
for eeg_stage_j = 1:1:eeg_annotation_data_len
eeg_stage(1,eeg_stage_i + 1:eeg_duration_div(eeg_stage_j) + eeg_stage_i) = eeg_annotation_data(eeg_stage_j);
eeg_stage_i = eeg_stage_i + eeg_duration_div(eeg_stage_j);
end
#以上代码来自研19黄永庆师兄