资源简介
Python中HHT(希尔伯特-黄变换)以及其在EEG数据处理中的应用。资料中包括源码以及pyHHT的说明书和一篇单通道去伪迹的文献资料。
代码片段和文件信息
# %matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from pyhht import EMD
from scipy.signal import hilbert
import tftb.processing
import mne
# 定义HHT的计算分析函数
def HHTAnalysis(eegRaw fs):
# 进行EMD分解
decomposer = EMD(eegRaw)
# 获取EMD分解后的IMF成分
imfs = decomposer.decompose()
# 分解后的组分数
n_components = imfs.shape[0]
# 定义绘图,包括原始数据以及各组分数据
fig axes = plt.subplots(n_components + 1 2 figsize=(10 7) sharex=True sharey=False)
# 绘制原始数据
axes[0][0].plot(eegRaw)
# 原始数据的Hilbert变换
eegRawHT = hilbert(eegRaw)
# 绘制原始数据Hilbert变换的结果
axes[0][0].plot(abs(eegRawHT))
# 设置绘图标题
axes[0][0].set_title(‘Raw Data‘)
# 计算Hilbert变换后的瞬时频率
instf timestamps = tftb.processing.inst_freq(eegRawHT)
# 绘制瞬时频率,这里乘以fs是正则化频率到真实频率的转换
axes[0][1].plot(timestamps instf * fs)
# 计算瞬时频率的均值和中位数
axes[0][1].set_title(‘Freq_Mean{:.2f}----Freq_Median{:.2f}‘.format(np.mean(instf * fs) np.median(instf * fs)))
# 计算并绘制各个组分
for iter in range(n_components):
# 绘制分解后的IMF组分
axes[iter + 1][0].plot(imfs[iter])
# 计算各组分的Hilbert变换
imfsHT = hilbert(imfs[iter])
# 绘制各组分的Hilber变换
axes[iter + 1][0].plot(abs(imfsHT))
# 设置图名
axes[iter + 1][0].set_title(‘IMF{}‘.format(iter))
# 计算各组分Hilbert变换后的瞬时频率
instf timestamps = tftb.processing.inst_freq(imfsHT)
# 绘制瞬时频率,这里乘以fs是正则化频率到真实频率的转换
axes[iter + 1][1].plot(timestamps instf * fs)
# 计算瞬时频率的均值和中位数
axes[iter + 1][1].set_title(‘Freq_Mean{:.2f}----Freq_Median{:.2f}‘.format(np.mean(instf * fs) np.median(instf * fs)))
plt.show()
# 定义HHT的滤波函数,提取部分EMD组分
def HHTFilter(eegRaw componentsRetain):
# 进行EMD分解
decomposer = EMD(eegRaw)
# 获取EMD分解后的IMF成分
imfs = decomposer.decompose()
# 选取需要保留的EMD组分,并且将其合成信号
eegRetain = np.sum(imfs[componentsRetain] axis=0)
# 绘图
plt.figure(figsize=(10 7))
# 绘制原始数据
plt.plot(eegRaw label=‘RawData‘)
# 绘制保留组分合成的数据
plt.plot(eegRetain label=‘HHTData‘)
# 绘制标题
plt.title(‘RawData-----HHTData‘)
# 绘制图例
plt.legend()
plt.show()
return eegRetain
if __name__ == ‘__main__‘:
####################示例数据分析##################################
# 生成0-1时间序列,共100个点
t = np.linspace(0 1 100)
# 生成频率为5Hz、10Hz、25Hz的正弦信号累加
modes = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 25 * t)
# 信号和时间累加,相当于添加噪声
eegRaw = modes + t
# fs为采样频率,用于正则化频率和真实频率的转换
fs = 100
# 进行HHT分析
HHTAnalysis(eegRaw fs)
# 选取需要保留的信号进行合成,也就是相当于滤波
eegRetain = HHTFilter(eegRaw [0 1 2 3])
######################真实数据分析#################################
# 加载fif格式的数据
epochs = mne.read_epochs(r‘F:\BaiduNetdiskDownload\BCICompetition\BCICIV_2a_gdf\Train\Fif\A02T_epo.fif‘)
# 获取采样频率
sfreq = epochs.info[‘sfreq‘]
# 想要分析的数据
eegData = epochs
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-09-07 18:13 Python中HHT(希尔伯特-黄变换)以及其在EEG数据处理中的应用\
文件 29231312 2020-05-09 16:39 Python中HHT(希尔伯特-黄变换)以及其在EEG数据处理中的应用\A02T_epo.fif
文件 3907 2020-09-07 17:49 Python中HHT(希尔伯特-黄变换)以及其在EEG数据处理中的应用\HHT_Analysize.py
文件 1238670 2020-09-03 09:36 Python中HHT(希尔伯特-黄变换)以及其在EEG数据处理中的应用\pyhht-readthedocs-io-en-latest.pdf
文件 3897122 2020-09-02 18:31 Python中HHT(希尔伯特-黄变换)以及其在EEG数据处理中的应用\单通道脑电信号眼电伪迹去除算法研究.pdf
相关资源
- Python实现购物评论文本情感分析操作
- Python 3.8.1 32位安装包.zip
- OpenCV+3计算机视觉++Python语言实现 高清
- matlab代码转换为python代码
- python实现hmm
- Python-GUI-PyQ5总概述.xmind
- 基于python实现的BS架构FTP服务器程序
- Networkx安装步骤及资源
- python深度学习-高清pdf-源码
- 嵩天 礼欣 黄天羽 著 Python语言程序
- Python3.8.0 官方中文帮助文档 API参考手
- Introduction to Computation and Programming Us
- 亚马逊电子书-Keras快速上手:基于P
- ROS系统上的python应用开发实践讲解与
- python 数据挖掘入门与实战 pdf+代码
- Python3.4 PyQt5 32位安装版PyQt5-5.5.1-gpl-
- 基于python3 tensorflow DBN_and_RNN的实现
- Fluent Python高清中文版
- python计算机视觉编程programming compute
- python调用dlib库实现简单的人脸识别
- Python-全唐诗分析程序
- Python-我是小诗姬全唐诗作为训练数据
- 基于python和pencv的车牌号码识别
- Python实现的GMM用于语音识别
- python+selenium+unittest自动化测试demo
- Django可用的安装包
- Python for Kids - A Playful Introduction to Pr
- scipy-1.4.1-cp38-cp38-win_amd64.whl
- Python+selenium+HTMLTestRunner+unittest 测试框
- Python做一个推箱子小游戏
评论
共有 条评论