脑电:数据预处理

一、Matlab与eeglab的版本匹配

确定好Matlab和eeglab的版本匹配问题(其他编程软件和软件包也是要这样处理,先确定版本是否匹配或者兼容)

直接可以用到的文件(就是函数调用),是在set path中有路径的(就相当于是电脑的环境变量)

二、数据预处理(降噪)

1. 数据格式转换

导入原始数据

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

读数据进行处理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

导入数据后的显示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

附:导入更多厂家格式的数据

在这里插入图片描述

进入下载界面后,下载得到.zip压缩包(里面是两个.m文件),将解压后的问价添加到eeglab文件夹中的plugins

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

之后,重启eeglab,再保存数据得到.set数据即可(转换数据格式,统一为.set格式)

2. 加载.set数据文件

file --> load existing data

edit --> channel loaction(通过eeglab自带的standard文件为各channel配置location)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于演变电极:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3. 去除无用电极(如果有,即是选做)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择无用数据段或电极:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

先滤波之后,再进行分段或者是降采样。

4. 滤波(用高通加低通代替带通)(同时0.1-40的话,变成带通)

可以二次滤波(但是范围不能一样)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了取出工频干扰(50Hz),采用带阻去除干扰,区间为[48,52](选择Notch filter the data instead of pass band)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5. 降采样(根据数据的采样率,选做)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后面是对新的数据文件进行命名。

6. 分段(静息态和任务态),基线校正(任务态,静息态不存在基线)

分段是以所选择的刺激marker为0点,选择一个时间段的脑电数据,其中之前的时间点(要保证这一段数据均值为0 --> 基线校正):

  • 若ERP,则是100ms~200ms
  • 若时域分析,则是500ms,通常是1000ms

后面的分析范围段,是要在两次刺激发生之间。

分段:只保留反应正确的分段,前提:要有反应的marker.

一种解决方法:将刺激marker和反应marker组合成一个marker

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

mark是指实验或测试中对特定刺激进行标记或记录。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

plot data(scroll):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

scale范围一般在50-70(channel为60时),根据数据的波动的变化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7. 去坏段 替换坏通道

三明治法:

看数据找坏通道 - 插补坏通道- 看数据去坏段

剔除坏段

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

marker无效:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插补坏导

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

去掉坏段

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8. RUN ICA

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

跑出ICA的各成分:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

绘制所有成分的地形图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

附:关于ICA跑出的各种干扰的地形图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

肌电:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

9. 去除伪迹

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

10. 极端值

± 100uv

11. 重参考(要确定参考的电极数据良好)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

average references–>全脑平均的重参考

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据质量:在线电极>参考电极>分析电极

12. 手动浏览

最后检查数据,观察是否预处理成功,也就是看数据处理后的质量如何


附:任务态、静息态数据处理区别

任务态数据二次滤波和二次分段(都会改变原来一次分段基线校正后的均值),所以都需要进行二次的基线校正。

先进行二次滤波,在进行二次分段(因为滤波后还需要基线校正,直接在二次分段时校正即可)

二次滤波:预处理时的频段和分析时频段不一样时

二次分段:分析的ERPs的分段变成[-0.2, 1]

静息态的数据的上述步骤基本一样,只有分段时没有marker标记,所以分段按照代码的方式进行分段。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


三、批处理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码处理框架:
1.
1. 数据格式转化

2. 通道定位 -- 分段

 去坏段替坏导(手动处理)

    1. Run ICA

    手动去ICA伪迹成分


    1. 极端值
    2. 重参考

    手动浏览
    批处理

[外链图片转存中…(img-MKQ6exJe-1742026036544)]

代码处理框架:
1.
1. 数据格式转化

2. 通道定位 -- 分段

 去坏段替坏导(手动处理)

    1. Run ICA

    手动去ICA伪迹成分


    1. 极端值
    2. 重参考

    手动浏览

### Python 实现信号的小波去噪 Python 提供了多种库用于信号处理,其中 `PyWavelets` 是一个小波分析的强大工具包。它能够执行离散小波变换 (DWT),这对于去除信号中的噪声非常有效[^1]。 以下是基于 PyWavelets 的信号小波去噪的具体方法: #### 安装依赖 为了实现小波去噪功能,需安装以下库: ```bash pip install pywt matplotlib numpy scipy ``` #### 小波去噪的核心原理 小波去噪的主要思想是利用小波分解将信号分为不同频率分量,在这些分量中阈值化系数以减少噪声的影响。具体过程包括以下几个方面: - 使用合适的小波基函数对信号进行多尺度分解。 - 对每一层的高频细节部分设置合适的阈值,从而保留主要特征而抑制噪声。 - 进行重构操作得到去噪后的信号[^2]。 #### 示例代码 以下是一个完整的 Python 代码示例,展示如何使用 PyWavelets 库对信号进行小波去噪: ```python import numpy as np import pywt import matplotlib.pyplot as plt def wavelet_denoise(signal, wavelet='db4', level=3, threshold_mode='soft'): """ 基于小波变换的信号去噪 参数: signal: 输入的一维时间序列信号 wavelet: 所选的小波基名称,默认为 'db4' level: 分解层数,默认为 3 层 threshold_mode: 阈值模式 ('soft' 或 'hard') 返回: denoised_signal: 去噪后的信号 """ # 计算最佳阈值 coefficients = pywt.wavedec(signal, wavelet, mode='per', level=level) sigma = np.median(np.abs(coefficients[-1])) / 0.6745 threshold = sigma * np.sqrt(2 * np.log(len(signal))) # 阈值化处理 new_coefficients = [ pywt.threshold(c, value=threshold, mode=threshold_mode) if i != 0 else c for i, c in enumerate(coefficients) ] # 重构信号 denoised_signal = pywt.waverec(new_coefficients, wavelet, mode='per') return denoised_signal # 模拟带有噪声的信号 np.random.seed(42) clean_signal = np.sin(2 * np.pi * 0.1 * np.arange(1000)) noise = np.random.normal(scale=0.5, size=len(clean_signal)) noisy_signal = clean_signal + noise # 去噪处理 denoised_signal = wavelet_denoise(noisy_signal) # 可视化结果 plt.figure(figsize=(12, 8)) plt.subplot(3, 1, 1) plt.plot(clean_signal, label="Clean Signal", color="green") plt.legend() plt.subplot(3, 1, 2) plt.plot(noisy_signal, label="Noisy Signal", color="red") plt.legend() plt.subplot(3, 1, 3) plt.plot(denoised_signal, label="Denoised Signal", color="blue") plt.legend() plt.tight_layout() plt.show() ``` 上述代码实现了以下功能: 1. **输入信号**:模拟了一个干净的正弦波信号,并加入高斯白噪声形成含噪信号。 2. **小波分解与重构**:采用 Daubechies 4 (`db4`) 小波基对信号进行三层分解,随后通过软阈值法消除噪声影响。 3. **可视化对比**:分别展示了原始清洁信号、含噪信号以及最终去噪效果。 #### 关键参数说明 - `wavelet`: 表示所选用的小波基函数,常见的有 `haar`, `dbN`(Daubechies),`symN`(Symlets)等。 - `level`: 控制小波分解的层次数,通常建议不超过 $\log_2(N)$,其中 $N$ 是信号长度。 - `threshold_mode`: 设置为 `'soft'` 或 `'hard'` 来决定阈值化的策略。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值