「scipy、eeg」使用python scipy butter filtfilt 分解EEG数据为5个频带和滤波参数选择

使用scipy butter filtfilt 分解EEG数据和滤波参数选择

【目录】

  • EEG数据频带和滤波参数
  • 滤波类型及示例
  • Pyhton 代码实现
一、EEG数据频带和滤波参数

在这里插入图片描述

二、滤波类型
  • 低通滤波(lowpass)
  • 高通滤波(highpass)
  • 带通滤波(bandpass)
  • 带阻滤波(bandstop)
2.1 低通滤波

低于某个频率的信号可以通过,而高于这个频率的信号会被衰减过滤掉

2.2 高通滤波

高于某个频率的信号可以通过,而低于这个频率的信号会被衰减过滤掉

2.3 带通滤波

指的是在某个频率段范围内的信号可以通过,而这个频率段范围以外的信号会被衰减过滤掉

2.4 带阻滤波

指的是在某个频率范围内的信号会被衰减过滤掉,而这个频率范围以外的信号会被保留下来

tips:滤波并不能完全过滤出我们想要的频段。比如30Hz的低通滤波,并不是说30Hz以外的信号就全部
被过滤掉了,而是以30Hz为截止频率,高于这个截止频率的信号会被逐渐衰减。

在这里插入图片描述

三、Python 代码实现
  • scipy
  • butter
  • filtfilt,对于EEG数据,推荐filtfilt
import numpy as np
from scipy.signal import butter, filtfilt


def decompose_eeg_data(data, sample_rate=250):
    """
    decompose eeg data to five band:
        'delta': (1, 4),
        'theta': (4, 8),
        'alpha': (8, 13),
        'beta': (13, 30),
        'gamma': (30, 40)
    :param data: raw eeg data, format = (channels, timepoints)
    :param sample_rate: sampling rate of data
    :return: decomposed eeg data
    """

    # define band
    frequency_bands = {
        'delta': (1, 4),
        'theta': (4, 8),
        'alpha': (8, 13),
        'beta': (13, 30),
        'gamma': (30, 40)
    }

    data_matrix = []
    for item in frequency_bands.values():
        data_matrix.append(butter_bandpass(data, 5, item, sample_rate))

    return np.array(data_matrix)


def butter_bandpass(data, order, freq_cut, sample_rate):
    """
    btype: lowpass, highpass, bandpass, bandstop.
            低通、高通、带通、带阻
    low order -> [1, 3]
        通常用于简单的滤波需求,如基础的信号去噪或低频信号的保留.
        例如,1阶滤波器相对平滑,适合对信号变化不那么敏感的情况。
    middle order -> [4, 6]
        通常用于对频率响应有一定要求的应用。
        比如在图像处理或生物信号处理(如 EEG、ECG)中,4-6阶可以在有效过滤噪声的同时
        保留信号的特征。
    high order -> [7, 7+]
        只有在信号特点复杂、需要更加精准的频率选择时使用。
        高阶滤波器可以产生更陡峭的过渡带,但可能提高计算复杂性和引入更大的相位延迟。
        一般考虑在 7-10 阶,但如果需要更严格的频率响应,甚至可以用到 20 阶或以上,
        但这通常不建议,因为稳定性和计算负担会显著增加。
    :param data: raw data is going to filter
    :param order: the order of filter
    :param freq_cut: [low, high] cut frequency
    :param sample_rate: sampling rate of data
    :return: filtered data
    """
    low = freq_cut[0] * 2 / sample_rate
    high = freq_cut[1] * 2 / sample_rate
    b, a = butter(order, [low, high], btype='bandpass', fs=sample_rate)
    return filtfilt(b, a, data)  # 双向滤波

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/950660.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络传输层TCP协议

传输层TCP协议 1. TCP协议介绍 TCP(Transmission Control Protocol,传输控制协议)是一个要对数据的传输进行详细控制的传输层协议。 TCP 与 UDP 的不同,在于TCP是有连接、可靠、面向字节流的。具体来说,TCP设置了一大…

深度学习第三弹:python入门与线性表示代码

一、python入门 1.熟悉基础数据结构——整型数据,浮点型数据,列表,字典,字符串;了解列表及字典的切片,插入,删除操作。 list1 [1, 2, 3, 4, 5] for each in list1:print(each) print(list1[1…

【Linux】shell脚本编程

目录 概念: shell脚本的本质: shell脚本编程: shell变量: 变量的定义格式: 变量的分类 自定义变量: 环境变量: 命令变量与命令行参数: 预定义变量: shell中的…

Onedrive精神分裂怎么办(有变更却不同步)

Onedrive有时候会分裂,你在本地删除文件,并没有同步到云端,但是本地却显示同步成功。 比如删掉了一个目录,在本地看已经删掉,onedrive显示已同步,但是别的电脑并不会同步到这个删除操作,在网页版…

CSS——1.优缺点

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><link rel"stylesheet" type"text/css" href"1-02.css"/></head><body><!--css&#xff1a;层叠样式表…

软件23种设计模式完整版[附Java版示例代码]

一、什么是设计模式 设计模式是在软件设计中反复出现的问题的通用解决方案。它们是经过多次验证和应用的指导原则,旨在帮助软件开发人员解决特定类型的问题,提高代码的可维护性、可扩展性和重用性。 设计模式是一种抽象化的思维方式,可以帮助开发人员更好地组织和设计他们…

(2023|NIPS,LLaVA-Med,生物医学 VLM,GPT-4 生成自指导指令跟随数据集,数据对齐,指令调优)

LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 目录 LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 0. 摘要 1. 简介 2. 相关工作 3. 生物医学视觉指令数据 4. 将多模态对话模型适配…

深入理解Mybatis原理》MyBatis的sqlSessi

sqlSessionFactory 与 SqlSession 正如其名&#xff0c;Sqlsession对应着一次数据库会话。由于数据库会话不是永久的&#xff0c;因此Sqlsession的生命周期也不应该是永久的&#xff0c;相反&#xff0c;在你每次访问数据库时都需要创建它&#xff08;当然并不是说在Sqlsession…

Numpy数组的属性

NumPy中最重要的一个特点就是其n维数组对象&#xff0c;即ndarray(别名array)对象&#xff0c;该对象具有矢量算术能力和复杂的广播能力&#xff0c;可以执行一些科学计算。不同于Python内置的数组类型&#xff0c; array对象拥有对高维数组的处理能力&#xff0c;这也是数值计…

(十)提示词任务分解的策略探讨

&#x1f4e2;&#x1f4e2;&#x1f4e2; 大家好&#xff0c;我是云楼Yunlord&#xff0c;CSDN博客之星人工智能领域前三名&#xff0c;多年人工智能学习工作经验&#xff0c;一位兴趣稀奇古怪的【人工智能领域博主】&#xff01;&#xff01;&#xff01;&#x1f61c;&#…

01 数据分析介绍及工具准备

数据分析介绍及工具准备 一、工具准备二、下载和使用Anaconda三、jupyter notebook常用快捷键 一、工具准备 数据科学库 NumPy&#xff0c;SciPy&#xff0c;Pandas&#xff0c;Scikit-Learn 数据可视化库 Matplotlib&#xff0c;Seaborn 编译器 Jupyter Notebook 数据科…

excel表格二维X、Y坐标散点图

excel中存在两列或两行数据&#xff0c;分别表示x坐标和对应的y坐标&#xff0c;同时选中两列或两行数据&#xff1a; 依次选择菜单&#xff0c;插入&#xff0c;图标&#xff0c;XY散点图 可以看到在表格中生成了以第1列为X轴&#xff0c;第2列为Y轴的二维XY散点图&#xff…

Cursor无限续杯——解决Too many free trials.

前情提要 我们都知道Cursor对新用户是有14天且500条免费限制的。 一般情况下&#xff0c;当14天过期&#xff0c;是可以注销账户再重新注册&#xff0c;这样就可以继续拥有14天的体验时长。 但是&#xff01;&#xff01;如果使用超过500次&#xff0c;Cusor就会把你的电脑I…

HCIE-day10-ISIS

ISIS ISIS&#xff08;Intermediate System-to-Intermediate System&#xff09;中间系统到中间系统&#xff0c;属于IGP&#xff08;内部网关协议&#xff09;&#xff1b;是一种链路状态协议&#xff0c;使用最短路径优先SPF算法进行路由计算&#xff0c;与ospf协议有很多相…

洛谷P1617———数字转英文

题目如下 思路&#xff1a;将1~9的英文和20~90的英文用字符串数组存储&#xff0c;把下标看作对应的数字进行输出&#xff0c;遇到0或连续多个0就输出“and”&#xff0c;定义l用来看枚举到哪一位了&#xff0c;如果是单独输入一个“0”&#xff0c;则直接输出zero然后结束。否…

UnityRenderStreaming使用记录(五)

UnityRenderStreaming不一样的错误&#xff0c;船新的版本 继续docker部署UnityRenderStreamingdockerfile一些命令出现了新的错误先解决一个报错不知道怎么解决&#xff0c;先跑个glxgears测试一下先解决MESA和glx的问题新的log&#xff0c;额新的错误尝试解决libnvidia-encod…

Unity-Mirror网络框架-从入门到精通之AdditiveScenes 示例

文章目录 前言Additive Levels和Additive ScenesAdditive Levels场景介绍Portal传送门FadeInOut特效 Additive Scenes示例介绍ZoneHandlerSceneMassage 最后 前言 在现代游戏开发中&#xff0c;网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框…

Mac-docker配置

1.配置的文件路径 cd ~/.docker (base) zhangyaweimacbookair .docker % ls buildx cli-plugins config.json contexts daemon.json desktop-build mutagen run (base) zhangyaweimacbookair .docker % cat daemon.json## 重启docker服务 sudo systemctl daemon-reload sudo…

PHP进阶-在Ubuntu上搭建LAMP环境教程

本文将为您提供一个在Ubuntu服务器上搭建LAMP&#xff08;Linux, Apache, MySQL, PHP&#xff09;环境的完整指南。通过本文&#xff0c;您将学习如何安装和配置Apache、MySQL、PHP&#xff0c;并将您的PHP项目部署到服务器上。本文适用于Ubuntu 20.04及更高版本。 一、系统更新…

Elasticsearch(看这一篇就够了)

目录&#xff1a; Elasticsearch介绍正排索引和倒排索引Elasticsearch安装安装ES服务安装服务安装kibana 索引操作创建索引查询索引库修改索引库删除索引库 Elasticsearch常用操作文档操作新增文档查询文档删除文档根据id批量查询文档查询所有文档修改文档部分字段 域的属性分词…