【能量算子】评估 EEG 中的瞬时能量:非负、频率加权能量算子(PythonMatlab代码实现)

news2024/11/18 1:29:46

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Python、Matlab代码实现


💥1 概述

文献来源:

 瞬时能量的信号处理测量通常只包括幅度信息。但是,包括幅度和频率的测量在评估系统产生信号所需的能量方面做得更好,这使得它们成为更敏感的测量,可以包含在脑电图(EEG)分析中。Teager-Kaiser算子是EEG分析中经常使用的频率加权度量,尽管该算子在常见信号处理概念方面的定义很差。我们提出了一种替代的频率加权能量度量,它使用信号导数的包络。这种简单的包络导数算子具有非负的优点,当应用于新生儿脑电图的检测应用时,它比Teager-Kaiser算子提高了性能:在没有后处理滤波器的情况下,Teager-Kaiser算子的接收器工作特性曲线(AUC)下面积为0.57,包络导数算子为0.80。包络导数算子还满足与 Teager-Kaiser 算子类似的重要属性,例如跟踪瞬时幅度和频率。

原文摘要:

Abstract:

Signal processing measures of instantaneous energy typically include only amplitude information. But measures that include both amplitude and frequency do better at assessing the energy required by the system to generate the signal, making them more sensitive measures to include in electroencephalogram (EEG) analysis. The Teager-Kaiser operator is a frequency-weighted measure that is frequently used in EEG analysis, although the operator is poorly defined in terms of common signal processing concepts. We propose an alternative frequency-weighted energy measure that uses the envelope of the derivative of the signal. This simple envelope- derivative operator has the advantage of being nonnegative, which when applied to a detection application in newborn EEG improves performance over the Teager-Kaiser operator: without post-processing filters, area-under the receiver-operating characteristic curve (AUC) is 0.57 for the Teager-Kaiser operator and 0.80 for the envelope-derivative operator. The envelope-derivative operator also satisfies important properties, similar to the Teager-Kaiser operator, such as tracking instantaneous amplitude and frequency.

能量是一个难以在信号处理环境中定义的术语。信号处理的定义与物理学中使用的定义不同,物理学是衡量系统中完成的工作(或可以完成的工作)的度量,因为我们通常不知道或无法访问生成信号的系统。例如,信号处理定义仅评估幅度,并为两个单位幅度信号分配相同的值,一个在1 Hz,另一个在1 000 Hz,即使生成这些信号的能量(完成的工作)可能不同。

为了解决这一不足,Kaiser根据Teager以前未发表的工作提出了一种能量测量,不仅包括幅度,还包括信号的频率[1]。使用这个Teager-Kaiser定义,不同频率的单位幅度信号显示出不同的能量。这个定义通常被称为非线性能量算子,也不同于经典的能量测量,因为它是一种瞬时测量;也就是说,它是时间的函数,可以跟踪信号的变化,从而跟踪系统能量的变化。

这种Teager-Kaiser测量已被应用于生物医学信号处理的许多领域,包括脑电图(EEG)分析[2],[3]。这个Teager-Kaiser算子的一个局限性是解释:测度是包含二阶微分方程的非线性系统的输出。在大多数脑电图应用中,操作员有大量的后处理,这让人怀疑这种措施的适用性。我们建议从信号处理前景研究Teager-Kaiser算子,并在新生儿记录的脑电图数据集上测试我们的结论。

📚2 运行结果

 

主函数代码:

print('\n' + start_message)

# -------------------------------------------------------------------
# Test #1: EDO with sum of 2 sinusoids
# -------------------------------------------------------------------
print('\n\n ------------------------------------------')
print(' 1. test EDO and compare with Teager-Kaiser operator')

# 1. generate 2 sinusoidal signals
N = 256
n = np.arange(N)
w = (np.pi / (N / 32), np.pi / (N / 8))
ph = (-np.pi + 2 * np.pi * np.random.rand(1),
      -np.pi + 2 * np.pi * np.random.rand(1))
a = (1.3, 3.1)
x = a[0] * np.cos(w[0] * n + ph[0]) + a[1] * np.cos(w[1] * n + ph[1])

# 2. estimate the EDO
x_edo = edo.gen_edo(x, True)

# 3. generate Teager--Kaiser operator for comparison:
x_nleo = general_nleo.specific_nleo(x, type='teager')

# 4. plot
fig, ax = plt.subplots(nrows=2, ncols=1, num=1, clear=True)
ax[0].plot(x, '-', label='test signal')
ax[1].plot(x_edo, '-', label='EDO')
ax[1].plot(x_nleo, label='Teager-Kaiser')
ax[0].legend(loc='upper right')
ax[1].legend(loc='upper left')
plt.pause(0.0001)

input("\n Any key to continue...")


# -------------------------------------------------------------------
# Test #2: EDO with Gaussian white noise
# -------------------------------------------------------------------
print('\n\n ------------------------------------------')
print(' 2. test EDO with Gaussian random noise')
# 1. test with random signal:
edo.test_edo_random()

input("\n Any key to continue...")

# -------------------------------------------------------------------
# Test #3: EDO with 4 different signal types
# -------------------------------------------------------------------
print('\n\n ------------------------------------------')
print(' 3. test EDO with different types and plot against expected ')
print('    frequency-weighted energy')
# 2. test with lots of different signals:
test_edo.do_all_tone_tests()

input("\n Any key to continue...")

# -------------------------------------------------------------------
# Test #4: compare different versions of the NLEO operator of the form:
# Ψ(n) = x(n-l)x(n-p) - x(n-q)x(n-s)
# -------------------------------------------------------------------
print('\n\n ------------------------------------------')
print(' 4. compare different NLEO of the form: x(n-l)x(n-p) - x(n-q)x(n-s)')

# 1. get test signal:
x1 = gen_test_signals.gen_signals('4', False)

# 2. compare methods based on the general NLEO expression:
general_nleo.test_compare_nleos(x1['x'], True)


input("\n Any key to finish.")


# -------------------------------------------------------------------
# compare with Matlab
# -------------------------------------------------------------------
# from test_functions import compare_matlab as cmp

# # load .csv files and compare with Matlab:
# cmp.test_compare_all_files()

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] JM O' Toole, A Temko, NJ Stevenson, “Assessing instantaneous energy in the 
EEG: a non-negative, frequency-weighted energy operator”, IEEE Int. Conf.
on Eng. in Medicine and Biology, Chicago, August 2014

🌈4 Python、Matlab代码实现

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五种方法提升Midjourney的出图品质

本文基于B站UP主琥珀川Eric的《五种方法提升Midjourney出图品质》制作在此感谢大神的分享。 本文全面介绍以上五种提升Midjourney出图品质的方法,简单实用,马上就可以用上。Lets go!!! 方法一 使用相机参数创建逼真的图…

windows系统编译的Qt程序转到国产化麒麟linux中编译

团队自研股票软件,关威信共总号:QStockView,下载 1.1 windows系统编译的Qt程序转到国产化麒麟linux中编译 (1)把Vs工程项目文件导入到Linux中 首先把vs的工程拷贝到linux里面(可以用虚拟机的共享文件夹…

适配器模式的学习与使用

1、适配器模式的学习 当我们需要将一个类的接口转换成另一个客户端所期望的接口时,适配器模式(Adapter Pattern)可以派上用场。它允许不兼容的接口之间能够协同工作。   适配器模式属于结构型设计模式,它包含以下几个角色&#…

2、数据库:SQL Server部署 - 系统部署系列文章

对于微软的SQL Server的安装,以前已经有写过了,到了2022版本,安装没多大的改变,很多只需要少配置,然后直接下一步即可。现在是2023年了,SQL Server已经出到了2022版本,这篇博文就再次对SQL Serv…

chatgpt赋能python:Python列表按长度排序的方法

Python列表按长度排序的方法 在Python编程中,列表是最常用的数据结构之一。列表是一种可变的有序序列,可以包含任意类型的对象。有时候,我们需要对列表按照元素的长度进行排序。本文将介绍Python中列表按长度排序的两种方法。 方法一&#…

pytorch实战 -- 神经网络

softmax的基本概念 交叉熵损失函数 模型训练和预测 在训练好softmax回归模型后,给定任一样本特征,就可以预测每个输出类别的概率。通常,我们把预测概率最大的类别作为输出类别。如果它与真实类别(标签)一致&#xff0…

chatgpt赋能python:Python列表排序详解:从基础排序到高级算法

Python 列表排序详解:从基础排序到高级算法 在 Python 编程中,列表是常用的数据类型。列表的排序是其中重要的操作之一。Python 提供了多种方法来对列表进行排序,从简单的基础排序到高级的算法排序。在这篇文章中,我们将详细介绍…

找到 FSM 的区别序列、UIO 或特征集(W方法)

找到 FSM 的区别序列、UIO 或特征集(W方法) 1 简介 许多系统都是基于状态的:它们有一个更新的内部状态通过操作并影响行为。 在测试这样一个系统时,一个需要考虑状态。 这导致了一系列的语言,用于描述基于状态的规范和模型,这些可…

并发编程-系统学习篇

并发编程的掌握过程并不容易。 我相信为了解决这个问题,你也听别人总结过:并发编程的第 一原则, 那就是不要写并发程序 这个原则在我刚毕业的那几年曾经是行得通的,那个时候多核服务器还是一种奢侈品,系统的并发量也很…

沙盒不再高端,Windows11将自带沙盒让程序检测更方便

Windows 沙盒提供了轻型桌面环境,可以安全地在隔离状态下运行应用程序。 安装在 Windows 沙盒环境下的软件保持“沙盒”状态,并且与主机分开运行。 沙盒是临时的。 当关闭沙盒后,系统将删除所有软件和文件以及状态。 每次使用时,…

AWK常用用法

awk简介 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,…

解决一个典型的商业案例研究任务

介绍 印尼的一家公司 Gojek 通过移动应用程序提供运输和物流、食品和购物、支付、日常需求、商业、新闻和娱乐等服务,对经济做出了超过70亿美元的贡献。 它拥有 90 万注册商户、超过 1.9 亿次应用下载以及超过 200 万名司机能够在120分钟内完成超过18万个订单。我们…

chatgpt赋能python:Python创建界面的重要性及实现方法

Python创建界面的重要性及实现方法 作为一名有10年Python编程经验的工程师,我深知Python在Web开发、数据分析和人工智能等方面的强大表现。然而,Python对于前端的支持一直是一个不被关注的领域。 随着网站、移动应用和电脑软件的普及,用户对…

Find My产品|Targus推出最新支持苹果Find My双肩包

Targus宣布推出 Cypress Hero Backpack 双肩包,最大的亮点在于支持苹果“Find My”,在丢失后可定位追踪。 Targus这款双肩包采用了环保材料,可以妥善地保护笔记本电脑,并提供丰富的收纳袋存放各种配件和物品。这款双肩包内置带衬…

Unity Addressables学习笔记(3)---加载远程场景Scenes

前言 Unity Addressables学习笔记—汇总 正文 1.创建一个新场景 我是创建在Resources/Scenes目录下,如图: 2.为场景创建一个Addressables的Group Game1Group就是我新创建的一个Group用来存放场景1的所有资源,分组的配置跟Remote一样&a…

vue 读取本地文件

1. vue读取本地文件 2.在文件夹下添加一个类 3.读取本地文件,先读取文件的内容 4.在 body下添加一个属性 5.读取后,写到 setTimeout方法中,返回一个错误信息。 6. restart方法,在组件渲染时调用 7. return setTimeout &#xff08…

使用Redis的zset集合实现小程序的滚动分页

一、 Redis中,使用有序集合(sorted set)实现滚动分页的原理如下: 将每个文档的 score 值设置为时间戳(或根据其他规则计算的分数),将文档的 ID 作为 value,然后将其添加到有序集合中…

delphi 开发虚拟摄像头

用directshow创建一个虚拟摄像头 然后注册到系统, 在用一个main app 调用摄像头,往里面写流, 可以是屏幕录制,可以是播放的多媒体文件 然后具体是要实现录屏,或者播放多媒体文件,在虚拟摄像头插件中fil…

Godot 4 源码分析 - 初探

准备研究GoDot 4源码。 源码下载 获取源代码 在进入 SCons 构建系统并编译 Godot 之前,你需要将 Godot 的源代码下载到本地。 源代码位于 GitHub 上, 虽然你可以通过网站手动下载它, 但是通常你希望通过 git 版本控制系统来下载. 如果你是为了做贡献或拉动请求…

国产新秀---XS5018A,芯昇,图像信号处理芯片

国产视频处理芯片,大崛起。 XS5018A 是一款针对 CMOS 图像传感器的高性价比图像信号处理芯片,支持 1M/2M 像素 图像传感器,一组 10-bit DVP 输入接口, ISP 具备优异的 3D 降噪功能,标清模拟输出支持 960…