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

简介: 【能量算子】评估 EEG 中的瞬时能量:非负、频率加权能量算子(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以前未发表的工作提出了一种能量测量,不仅包括幅度,还包括信号的频率。使用这个Teager-Kaiser定义,不同频率的单位幅度信号显示出不同的能量。这个定义通常被称为非线性能量算子,也不同于经典的能量测量,因为它是一种瞬时测量;也就是说,它是时间的函数,可以跟踪信号的变化,从而跟踪系统能量的变化。

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

I. 引言

在信号处理的背景下,“能量”是一个难以定义的术语。信号处理中的定义与物理学中的定义不同,物理学中的定义是衡量系统中完成的功(或能够完成的功),因为在信号处理中,我们通常不知道或无法接触到产生信号的系统。例如,信号处理中的定义仅评估幅度,并将两个单位幅度信号(一个频率为1赫兹,另一个为1000赫兹)赋予相同的能量值,尽管产生这些信号所需的能量(完成的功)可能不同。

为了解决这种不足,Kaiser提出了一种能量度量方法,该方法基于Teager之前未发表的工作,不仅考虑了信号的幅度,还考虑了信号的频率[1]。根据这种Teager-Kaiser定义,不同频率的单位幅度信号表现出不同的能量。这种定义通常被称为非线性能量算子,它与经典能量度量不同,因为它是一种瞬时度量;也就是说,它是时间的函数,可以跟踪信号——进而系统的能量变化。

Teager-Kaiser度量方法已在生物医学信号处理的许多领域得到应用,包括脑电图(EEG)分析[2]、[3]。Teager-Kaiser算子的一个局限性在于其解释性:该度量是包含二阶微分方程的非线性系统的输出。在大多数脑电图应用中,该算子经过大量的后处理,这使得其适用性受到一定的质疑。我们建议从信号处理的角度研究Teager-Kaiser算子,并在从新生儿记录的脑电图数据集上验证我们的结论。

我们对提出的包络-导数算子与现有的Teager-Kaiser算子及其变体进行了比较。具体来说,我们评估了Teager-Kaiser算子在(4)中的检测性能以及Agarwal-Gotman算子在(5)中的检测性能。作为对比,我们还加入了一种无频率加权的瞬时能量度量(信号的平方)[8]。此外,我们应用了两种不同的后处理方法:计算算子的绝对值(不适用于非负的包络-导数算子)以及应用低通滤波器,具体形式为1.5秒的滑动平均窗口。这些后处理步骤是为使用Agarwal-Gotman算子检测早产儿脑电图中的爆发活动而提出的[2]。

IV. 结果与讨论

图4展示了两组数据的结果。性能评估基于时间一致性(逐样本)使用接收者操作特征曲线下面积(AUC)。我们的第一个观察结果是,Teager-Kaiser和Agarwal-Gotman算子在所有测试中的表现几乎完全相同。当噪声普遍存在时,或者当这两种算子对噪声的偏置大致相同时,我们预期在检测应用中会出现这种结果。其次,Teager-Kaiser和Agarwal-Gotman算子在其原始形式下的表现,与包络-导数算子相比,较差。这可能是因为Teager-Kaiser和Agarwal-Gotman算子可以取负值,并且更加振荡。应用绝对值或低通滤波器可以显著提高性能,例如在早产儿数据中,性能从0.57的AUC提高到0.76。第三,对于足月儿数据,瞬时能量度量的表现与频率加权能量度量类似。因此,在交替波模式中,低电压期和高电压期之间的频率差异可能很小。最后的观察结果是,所有频率加权度量在经过后处理后表现相似。

总之,包络-导数的非负性质已被证明具有优势:需要对Teager-Kaiser算子取绝对值才能达到与包络-导数算子类似的性能。包络-导数算子的一个缺点是其离散定义需要一个长持续时间的希尔伯特变换滤波器,从而增加了实时实现的延迟。如果需要,可以探索为该算子设计一个有效的短持续时间希尔伯特变换滤波器。但对于许多(如果不是全部)脑电图应用来说,实时实现并不是优先考虑的事项,包络-导数算子是一种理想的度量方法,用于评估瞬时的、频率加权的能量。

非负、频率加权能量算子在EEG瞬时能量评估中的研究

摘要

脑电图(EEG)信号反映了大脑皮层神经元群体活动的电位变化,其瞬时能量评估对于理解大脑动态功能至关重要。传统方法如短时傅里叶变换(STFT)存在时频分辨率权衡问题,且无法直接捕捉瞬时能量变化。本文聚焦于非负、频率加权能量算子(NFEO)在EEG瞬时能量评估中的应用,通过理论分析、方法改进及实验验证,探讨其优势与局限性,并提出未来研究方向。

1. 引言

EEG信号具有高度的非线性和非平稳性,其能量分布在时间和频率上动态变化。准确评估EEG信号的瞬时能量,可揭示大脑活动在特定时间和频率下的能量强度,为理解大脑功能状态、识别病理活动及评估认知过程提供关键信息。

传统EEG能量分析方法多基于傅里叶变换,如STFT。STFT通过对信号分段并对每个短时窗应用傅里叶变换,在时间和频率二维平面上表征信号的能量分布。然而,STFT存在时频分辨率的权衡问题:提高时间分辨率会降低频率分辨率,反之亦然。此外,STFT输出复数频谱,能量计算需取模平方,丢失了相位信息。

为更准确捕捉EEG信号的瞬时能量,研究人员提出多种能量算子,旨在直接估计信号的瞬时能量,避免傅里叶变换的限制。其中,非负、频率加权能量算子(NFEO)作为一种改进方法,通过引入频率加权和非负性约束,为EEG瞬时能量分析提供了新视角。

2. 相关研究综述

2.1 经典能量算子

能量算子(Energy Operator, EO),又称Teager-Kaiser能量算子,由Teager和Kaiser在20世纪80年代提出,最初应用于语音信号的瞬时频率和能量估计。经典EO定义为:

image.gif 编辑

其中,x(n) 为离散信号在时刻 n 的值。该算子通过信号在当前时刻、前一时刻和后一时刻的值估计能量,能够跟踪信号的瞬时幅度和频率变化。

然而,经典EO存在局限性:

  • 噪声敏感性:对噪声敏感,微小噪声扰动可能导致能量估计偏差。
  • 交叉项问题:对于多分量信号,经典EO会产生交叉项,影响对单个分量瞬时能量的准确估计。

2.2 非负、频率加权能量算子(NFEO)

为克服经典EO的局限性,研究人员提出NFEO,其核心思想是引入频率加权概念并保证能量估计的非负性。NFEO的离散形式可看作经典连续EO的近似,利用信号在当前时刻、前一时刻和后一时刻的值估计能量。

image.gif 编辑

NFEO的优势:

  • 非负性:对于常见信号类型(如单频信号或包络缓慢变化的信号),NFEO输出通常非负,更直观反映能量强度。
  • 频率加权:自然反映高频分量对能量的更大贡献,适用于分析包含丰富频率成分的EEG信号。
  • 计算效率:离散形式NFEO仅涉及简单乘法和减法运算,计算效率高,适用于大数据量EEG分析。
  • 瞬时性:作为时间局部算子,能量估计仅依赖极短时间窗内信息(如三个采样点),能灵敏捕捉能量快速变化。

2.3 相关研究进展

近年来,NFEO在EEG信号分析中的应用取得进展。例如,有研究提出一种基于信号导数包络的替代频率加权能量度量方法,在新生儿脑电图分析中表现优于Teager-Kaiser算子。该方法无需后处理滤波器,接收器工作特性曲线(AUC)达0.80,高于Teager-Kaiser算子的0.57。

另有研究将NFEO与EEG微状态分析结合,通过微状态参数特征捕获运动图像任务差异,获得高分类准确率,表明NFEO在脑认知研究中的潜力。

3. NFEO在EEG瞬时能量评估中的应用

3.1 EEG信号预处理

EEG信号包含多种频率成分,反映大脑不同功能活动。评估不同频率段瞬时能量变化对理解大脑动态活动至关重要。由于EEG信号是多分量信号,直接应用NFEO可能产生交叉项。因此,应用NFEO前通常需将EEG信号滤波至感兴趣频率带。

例如,若对alpha波(8-13 Hz)瞬时能量感兴趣,可先对原始EEG信号进行8-13 Hz带通滤波,再对滤波后信号应用NFEO,得到该频率带瞬时能量估计。

3.2 NFEO输出平滑处理

NFEO输出可能含高频噪声或波动,为获得稳定能量估计,通常需平滑处理,如移动平均滤波。通过对不同频率带滤波信号分别应用NFEO,可构建EEG信号在时间和频率上的瞬时能量分布图,类似时频图。

3.3 应用实例

3.3.1 认知任务中的EEG瞬时能量变化

通过应用NFEO分析认知任务执行过程中EEG信号瞬时能量变化,可揭示特定频率带能量随时间的快速变化。例如,研究发现,在注意力任务中,alpha波能量可能减弱,反映大脑从放松状态转向高度集中状态;而beta波能量可能增强,与主动思考和集中注意力相关。

3.3.2 病理状态下的EEG瞬时能量异常

NFEO可用于检测与癫痫、睡眠障碍等病理状态相关的异常能量波动模式。例如,癫痫发作通常伴随特定频率带能量急剧增加。通过应用NFEO分析癫痫患者EEG信号,可识别发作前能量变化特征,为癫痫预测和干预提供依据。

3.3.3 大脑功能网络动态连接分析

通过分析不同脑区在特定频率带瞬时能量间的相关性,可探索大脑功能网络动态连接。例如,研究发现,在认知任务中,不同脑区间alpha波能量同步性可能增强,反映大脑功能网络动态重组以支持任务执行。

4. NFEO的优势与局限性

4.1 优势

  • 瞬时性:NFEO是时间局部算子,能灵敏捕捉能量快速变化,适用于分析EEG信号中瞬时发生的神经事件。
  • 计算效率:离散形式NFEO计算简单、效率高,适用于大数据量EEG分析。
  • 非负性:NFEO输出通常非负,更直观反映能量强度。
  • 频率加权:自然反映高频分量对能量的更大贡献,适用于分析包含丰富频率成分的EEG信号。

4.2 局限性

  • 交叉项问题:对于多分量信号,即使经过滤波,NFEO仍可能存在交叉项,影响对单个分量瞬时能量的精确估计。可通过更精细信号分解技术(如经验模态分解EMD或变分模态分解VMD)与NFEO结合解决,但增加分析复杂度。
  • 噪声敏感性:虽离散形式NFEO对某些类型噪声有一定鲁棒性,但强噪声信号下性能可能下降。
  • 物理意义解释:NFEO输出是频率加权的能量度量,单位和具体物理意义需结合具体应用解释,不同于传统功率谱密度。

5. 未来研究方向

5.1 结合信号分解方法

探索将NFEO与先进信号分解方法(如EMD、VMD、独立分量分析ICA等)结合,更准确分离和估计不同信号分量的瞬时能量。例如,可先用EMD或VMD将EEG信号分解为多个本征模态函数(IMF),再对每个IMF应用NFEO,估计其瞬时能量,避免交叉项影响。

5.2 改进NFEO形式

研究更鲁棒、精确的NFEO形式,提高其在噪声环境和多分量信号中的性能。例如,可引入自适应滤波或机器学习技术优化NFEO参数,使其更好适应不同EEG信号特征。

5.3 动态脑网络分析

深入研究如何利用NFEO估计的瞬时能量信息构建和分析动态脑网络,揭示大脑功能连接动态特性。例如,可通过分析不同脑区间瞬时能量相关性,构建动态功能连接矩阵,探索大脑功能网络在认知任务中的动态重组机制。

5.4 临床和研究场景验证

在各种临床和研究场景下验证NFEO在识别病理活动、评估认知功能等方面的有效性,并与其他能量分析方法比较。例如,可在癫痫、睡眠障碍等临床场景中,比较NFEO与其他方法在检测异常能量波动模式方面的性能,为临床诊断和治疗提供更准确工具。

5.5 可视化方法开发

开发更直观、有效的可视化方法展示基于NFEO的EEG瞬时能量分布和动态变化。例如,可开发交互式可视化工具,允许研究者通过调整频率带、时间窗等参数,动态观察EEG信号瞬时能量变化,更深入理解大脑动态功能。

6. 结论

评估EEG信号的瞬时能量是理解大脑动态功能和识别神经病理的重要手段。非负、频率加权能量算子(NFEO)作为一种有效能量算子,以其瞬时性、计算效率和频率加权特性,为EEG瞬时能量分析提供新视角。尽管存在局限性,但通过与信号处理技术结合和方法改进,NFEO在EEG分析领域应用前景广阔。未来研究应继续探索NFEO潜力,更深入揭示大脑活动能量动态,为临床诊断和神经科学研究提供更强大工具。

📚2 运行结果

image.gif 编辑

image.gif 编辑 image.gif 编辑

image.gif 编辑

image.gif 编辑

主函数代码:

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 参考文献

相关文章
|
9天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
9天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
91 14
|
9天前
|
机器学习/深度学习 算法
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
|
9天前
|
机器学习/深度学习 传感器 算法
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)
|
17天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
188 102
|
17天前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
191 104
|
17天前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
180 103
|
17天前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
128 82
|
17天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
30 0
|
26天前
|
存储 人工智能 算法
Python实现简易成语接龙小游戏:从零开始的趣味编程实践
本项目将中国传统文化与编程思维相结合,通过Python实现成语接龙游戏,涵盖数据结构、算法设计与简单AI逻辑,帮助学习者在趣味实践中掌握编程技能。
99 0

热门文章

最新文章

推荐镜像

更多