欢迎光临散文网 会员登陆 & 注册

【更新20230715】MATLAB脚本《SheepEditor.m》(原UntitledProgram)使用说明

2023-07-15 16:20 作者:锕天霸动霸羽  | 我要投稿

软件版本:①MATLAB R2019b;②SleepSign2

下载地址:https://wwxr.lanzoum.com/b04dsp7sb 密码:ayuu

示例文件:https://wwxr.lanzoum.com/b04duf87i 密码:ayuu



目录

  • 基本介绍

  • 绘制电信号图

  • 绘制时频谱图

  • 绘制睡眠时相1

  • 绘制睡眠时相2

  • 绘制功率谱密度曲线

  • 参考资料



基本介绍


该脚本旨在快速绘制脑波相关的图片,使用MATLAB打开即可直接运行。

脚本运算的原始数据基于SleepSign的导出结果(参考示例文件),需要对SleepSign的使用有比较基础的了解,本文不另作说明。


自定义文件信号采样率和时间划分:

File Sampling Rate(文件采样率),在脑波记录软件VitalRecorder中可以更改,即幅值文件中每秒记录的信号个数,默认为128 Hz。

Time Division(时间划分),使用脑波分析软件SleepSign导出数据时可以更改,根据实际填写即可,默认为4 s。


关于功率谱密度的说明:

Power Spectrum Density(PSD,功率谱密度),在这里可以等同于我们平常口述的“能谱/谱能”。由于查阅的一些相关资料里对“Power(功率)”和“能量(Energy)”有做比较详细的区分,而个人无法对这部分的名词称呼妄下定论,故这里暂使用PSD(功率谱密度)作为模块名称,但在说明时仍然使用口语化的“能谱”,后续若能够确定名称再统一进行更改。

同样的情况也适用于Spectrogram/时频谱图/时频图。


导入数据:

点击模块后,根据提示导入需要绘图的数据。可直接选择txt文件,或将txt文件内容全选复制到Excel的第1张表格中,另存为xls或xlsx文件再选择。


更改文字标签:

在图窗菜单选择“编辑”→“坐标区属性”,或按图示操作打开“属性检查器”,即可更改文字或刻度标签。


保存图片:

在图窗菜单选择“文件”→“另存为”,保存为svg矢量图。

当图像中的线条太多时可能会使导出的图片模糊,此时可点击“文件”→“导出设置”→“渲染”→勾选“自定义渲染器”→“painters(向量格式)”→“导出”。

图片可导入Adobe Illustrator进一步修补美化。


保存图像样式:

部分模块可在图窗菜单选择“文件”→“另存为”,将当前图窗保存为fig文件,下次在MATLAB窗口打开fig文件时能保留修改后的颜色、线粗等样式。

MATLAB的色彩表现通常为RGB模式,每个值的范围均为0~1,网络查询的0~255色彩范围需进行等比换算。例如:经查询粉色的RGB值为(255,192,203),换算后即约为(1,0.753,0.796)。



绘制电信号图



点击Amplitude模块,选择使用SleepSign导出的幅值文件(示例Amplitude)。

导出一列幅值即可,导出多列也只能绘制第一列图像。


需注意,这版代码设定大于1000 uV的值为干扰信号,在绘图前已排除。



绘制时频谱图



点击Spectrogram模块,选择使用SleepSign导出的幅值与能谱文件(示例Amplitude;示例PSD)。

幅值文件需导出两列信号,第一列为EEG,第二列为EMG;能谱文件至少导出两段Division。


幅值图和时频图的绘制互不影响,如果只需要时频图,随便打开一份幅值文件即可。

需注意,绘制颜色图的代码实际计算的dB = 10*log10(power),非图例上的Log power。


时频图可选择绘制原图或拟合后的平滑图,平滑倍数N越大,绘图耗时越长。参考效果如图:


绘制时可选择是否显示等待条对话框,显示等待条进度动画也要耗费数秒,在N数低时较浪费时间。

不显示等待条可以节约绘图时间,但若不小心输错N数无法中途中止运算。为减少意外状况的发生,这版代码限制不显示等待条时只能输入1≤N≤10。



绘制睡眠时相1



点击Sleep Stage 1模块,选择使用SleepSign导出的幅值与睡眠时相文件(示例Amplitude;示例SleepStage1)。

幅值文件需导出两列信号,第一列为EEG,第二列为EMG;SleepSign内对睡眠时相的标记必须设置为“W”、“R”、“S”;根据示例文件显示,在程序主窗口输入Time Division = Epoch Time。


幅值图和时相图的绘制互不影响,如果只需要时相图,随便打开一份幅值文件即可。


受限于技术水平,这版本代码暂使用上万条有色短线覆盖原有线条进行上色,上色后可能会造成卡顿。参考效果如图:



绘制睡眠时相2



点击Sleep Stage 2模块,选择使用SleepSign导出的睡眠时相文件(示例SleepStage2)。

不同Group的数据需分开放置在不同的空文件夹内,读取时选择相应组别文件夹内的任意一份文件即可;导出文件的时相顺序决定绘图顺序;y-sxis unit选Time;Time Division = 60 min。


柱状图显示的ZT范围可输入不大于最大时长、且前后间隔不小于1的自然数。



绘制功率谱密度曲线



点击PSD Curve模块,选择使用SleepSign导出的能谱文件(示例PSD Curve)。

不同Group的数据需分开放置在不同的空文件夹内,读取时选择相应组别文件夹内的任意一份文件即可;每份能谱文件只导出一段Division。


该脚本可按照文件的名称顺序,对两组文件夹内的数据两两配对相减获得差值,从而绘制Group Difference图像。


先读取的Group绘制在下层,后读取的Group绘制在上层。Group difference = 后读取 - 先读取。



参考资料

  1. MathWorks官网:https://ww2.mathworks.cn/help/matlab/referencelist.html

  2. CSDN《Matlab打包可独立运行的exe可执行文件》:https://blog.csdn.net/thlzzz/article/details/109697423

  3. 知乎《傅里叶分析之掐死教程(完整版)》:https://zhuanlan.zhihu.com/p/19763358

  4. CSDN《【STM32F407的DSP教程】第27章 FFT的示波器应用》:https://blog.csdn.net/Simon223/article/details/106402717

  5. bilibili《matlab实现FFT算法》:https://www.bilibili.com/video/BV1i14y1K7Bq

  6. 知乎《[振动与测试 2] 什么是PSD(功率谱密度)》:https://zhuanlan.zhihu.com/p/49328001

  7. 知乎《信号频域分析方法的理解(频谱、能量谱、功率谱)》:https://zhuanlan.zhihu.com/p/441559677

  8. 知乎《功率谱密度(PSD)》:https://zhuanlan.zhihu.com/p/417454806

  9. CSDN《matlab添加进度条(waitbar)》:https://blog.csdn.net/weixin_43465015/article/details/89294079

  10. CSDN《Matlab导出图片模糊的解决办法》:https://blog.csdn.net/jontargaryen/article/details/80079124

  11. CSDN《MATLAB如何绘制多个(两个以上)的legend,且自定义不同曲线的标记mark》:https://blog.csdn.net/ervin_yi/article/details/9504337

  12. 知乎《不会吧,还有人不知道MATLAB这8个小技巧?》:https://zhuanlan.zhihu.com/p/155747685

  13. 知乎《在MATLAB中快速输入漂亮的公式 | LaTeX FB》:https://zhuanlan.zhihu.com/p/380894172

  14. CSDN《MATLAB 对话框字体属性设置方法》:https://blog.csdn.net/qq_38907360/article/details/120863127

  15. CSDN《Matlab中imagesc用法》:https://blog.csdn.net/qq_21449473/article/details/123083741

  16. CSDN《Matlab中的continue、break和return语句》:https://blog.csdn.net/gophae/article/details/103859511



由于从零学起参考的内容十分琐碎,故此处仅列出一小部分参考资料。

函数在官网均可查,阅读起来可能略有晦涩,个人更多靠百度。

我尽可能将每段代码的作用在脚本中都用中文注释出来,详见每段代码“%”后的内容。

有任何Bug,或觉得在MATLAB上的操作不够傻瓜的地方都可找我。

【更新20230715】MATLAB脚本《SheepEditor.m》(原UntitledProgram)使用说明的评论 (共 条)

分享到微博请遵守国家法律