原理
在康复训练过程中给患者播放几段生活中的视频,在此同时对患者进行脑电信息采集,通过对脑电数据的分析,得出患者对哪些视频片段感兴趣,对此反复播放。
简述
界面
本程序有预处理界面和数据分析界面,都设计在一个界面上,采取隐藏其他界面组件的方式来实现
首先进行脑电数据预处理,因为在采集脑电数据的时候,会有很多噪音,产生伪迹,因此我们需要去除这些伪迹,然后才能对脑电数据进行分析,这样才更具有精确性
预处理
在打开程序会出现如下图界面
第一步:加载数据,把我们所需要的脑电数据导入到程序中去,这里我导入的是.EDF数据
第二步:输入我们想要截取的脑电数据的片段,即脑电数据时间段,因为在数据采集时,是提前采集的所以需要对脑电数据进行片段截取
第三步:添加或删除脑电通道,因为我们在对脑袋数据进行分析时,并不需要所有的通道,因此我们可以根据自己的需要添加通道,只需要在勾选复选框,然后点击添加通道即可,添加错误可以点击错误通道,点击删除通道即可
第四步:点击一键预处理按钮,对脑电数据进行一键预处理,或者点击右上角的第一个菜单栏,会显示预处理的一系列步骤,可以自行处理,同时也看以查看数据处理前和处理后的对比,如下第二张图显示
注:第二步、第三步顺序随机
数据分析
在这里要进行数据提取和分析的部分,我们要根据自己的需求,提取数据特征,然后对其进行分析,得出结论
点击左上角的第二个菜单栏,选择特征提取的算法,这里有PSD特征提取和DE特征提取 脑电信号特征提取算法介绍
在选择结束特征提取的算法之后,会使用这种算法对脑电信号尽心提取,最后形成一张均值图和方差图,中间的红线为平均值,距离平均值越远的,患者对这段视频的反应越敏感
部分代码
首先需要生成GUI界面,在命令行输入guide,选择blank gui生成新的界面,添加我们所需要的组件
设置全屏代码
set(0,'Units','pixels'); //将计算机屏幕的单位值设为像素
sc = get(0,'MonitorPosition'); //获取显示屏的分辨率
set(gcf,'Menubar', 'none'); //gcf为当前窗口,不显示当前窗口的菜单条
set(gcf, 'Position',[sc(1)-1 sc(2)-1 sc(3) sc(4)]); //设置当前窗口的位置
设置组件是否显示
set(handles.axes1,'visible','off');
导入文件
[filename pathname] = uigetfile('.EDF', '选择文件');
if ~filename %如果没有打开文件
return;
end;
str = [pathname filename]; //str为文件的路径名和文件名
保存.mat数据
save Filename; //将工作空间中的所有变量保存到名为Filename的MAT文件中
save Filename x y z; //将工作空间中的x、y、z等指定变量保存到名为Filename的MAT文件中
save Filename -regexp pat1 pat2; //将工作空间中符合表达式要求的变量保存到名为Filename的MAT文件中
save Filename x y z -ASCII; //将工作空间中的x、y、z等指定变量保存到名为Filename的8位ASCII文件中
加载.mat数据
load Filename; //将名为Filename的MAT文件中的所有变量加载到工作空间中
load Filename x y z; //将名为Filename的MAT文件中的x、y、z等指定变量加载到工作空间中
load Filename -regexp pat1 pat2; //将名为Filename的MAT文件中符合表达式要求的变量加载到工作空间中
load Filename x y z -ASCII; //将名为Filename的8位ASCII文件中的x、y、z等指定变量加载到工作空间中
将当前窗口保存为图片
saveas(gca, 'picture1', 'jpg');
设置复选框为空,0表示复选框未勾选,1表示勾选
set(handles.Fpz, 'Value',0);
MATLAB GUI表格(uitable)的增删操作
表格增删查改
load('newData.mat'); //加载newData数据
set('handles.uitable', 'Data', newData); //把数据放入表格之中
生成零矩阵以及求绝对值
zeros(3,4) //按回车键生成了一个3行4列的零矩阵
abs(x); //是去绝对值的函数
排序
sort(A); //若A是向量不管是列还是行向量,默认都是对A进行升序排列。是默认的升序,而sort(A,'descend')是降序排序。若A是矩阵,默认对A的各列进行升序排列
sort(A,dim) //dim=1时等效sort(A),dim=2时表示对A中的各行元素升序排列
求矩阵大小
disp(size(A));
其他文章:
Matlab plot用法总结