新手在处理脑电的时候不可避免的会使用scan这样的商业软件,然后处理完数据以后可能会想导入到matlab进行画图,可是商量软件导出的文件格式可能并不那么自由,这里提供一个将scan处理完的脑电数据导出到matlab并画图的脚本如下
%
% Written By Yizhou
% Using the code without proper understanding the code and relevant background
% of EEG may lead to confusion, incorrect data analyses,or misinterpretations
% of results.
% The author assumes NO responsibility for inappropriate or incorrect use
% of this code.
% WX: 17373158786
% 使用neauscan提供的scan软件分析的脑电数据叠加平均以后会得到一个avg格式的文件,如果想要导出到matlab里面画图貌似并没有现成的方法
% 而eeglab界面并没有提供一个现成的选择框载入.avg文件,但是可以使用函数eeg_load_scan4_avg获得,这是本脚本的核心代码如下;
% 函数:eeg_load_scan4_avg
%
% 用法:[f,fid] = eeg_load_scan4_avg(filename)
%
%
%
% 变量介绍:
%
% f:这是一个结构体,里面包含了avg数据的所有内容,类似于读cnt的那个函数的输出变量,这个结构体里面包含
%
% f.header - general header parameters
%
% f.electloc - channel specific parameters
%
% f.data.header - small channel data header
%
% f.data.samples - channel data (not uV)
%
% f.variance - channel variance
%
% f.tag - scan4.1 file tags
%
% fid: 文件的一个指针,这里基本没啥用
%
% filename:文件名,和loadcnt当中的file一样。
%% 祭天
clear all;clc;
load('EEG.mat');
%% 载入数据 ERP的绘制
fig_path = 'D:\Docu\Project\draw_pic\data\ERP';cd(fig_path);
% 读取所有的avg格式文件;
fig_files = dir([fig_path,filesep,'*.avg']);
% 对每个文件进行读取
for fig_No = 1:length(fig_files)
exp_con_name = fig_files(fig_No).name(1:end-4)
% 每个avg文件生成一个文件夹
mkdir([fig_path,filesep,exp_con_name]);cd([fig_path,filesep,exp_con_name]);
% 读取avg文件
[f,fid] = eeg_load_scan4_avg(['D:\Docu\Project\draw_pic\data',filesep,fig_files(fig_No).name]);
% 将avg文件内的数据转为数组形式
for i = 1:65
EEG_avg(i,:)=(f.data(i).samples)';
end
% 每个通道电极点
for chan_point = 1:65
% chan_point = 28;
% 因为不可知的原因,数据需要除以20才能得到真实的幅值
mean_data = squeeze(EEG_avg(chan_point,:))./20;
figure;
plot(EEG.times, mean_data,'linewidth', 1.5); %% plot waveforms for different conditions
set(gca,'YDir','reverse','XAxisLocation','origin','YAxisLocation','origin','LineWidth',2.0,'box','off');
axis([-200 1000 -4 12]); %% define the region to display
title(['Group level data at',EEG.chanlocs(chan_point).labels],'fontsize',16);
xlabel('Latency (ms)','fontsize',16);
ylabel('Amplitude (uV)','fontsize',16);
print(gcf,[exp_con_name,'_',EEG.chanlocs(chan_point).labels],'-dpdf','-r600');
print 1.eps -depsc2 -r600;
% 由于不知道如何设定合适的文件名,所以保存以后再使用下面的函数进行修改文件名
movefile('1.eps',[exp_con_name,'_',EEG.chanlocs(chan_point).labels,'.eps']);
close all;
end
end