欢迎访问宙启技术站
智能推送

使用MNE数据集提取脑电图中的时域特征

发布时间:2024-01-08 07:22:52

脑电图(Electroencephalogram,EEG)是一种测量脑电活动的非侵入性方法,可用于研究大脑的功能和神经活动。MNE是一个用于处理和分析脑电图数据的开源Python库。在下面的例子中,我们将使用MNE数据集加载脑电图数据并提取时域特征。

首先,我们需要安装MNE库。在命令行中输入以下命令安装MNE:

pip install mne

接下来,我们将使用MNE数据集中的示例数据集。MNE数据集提供了一些用于测试和演示的标准数据集。在本例中,我们将使用MNE数据集中的"sample"数据集。这个数据集包含一名受试者在执行视觉刺激任务时的脑电图数据。

import mne
from mne.datasets import sample

# Load example dataset
data_path = sample.data_path()
raw_fname = data_path + '/MEG/sample/sample_audvis_raw.fif'
raw = mne.io.read_raw_fif(raw_fname)

现在我们已经加载了数据,接下来我们可以开始提取时域特征。常见的时域特征包括均值、方差、最大值和最小值等。MNE库提供了一些函数来计算这些特征。

# Extracting time domain features
mean = raw.get_data().mean(axis=1)
variance = raw.get_data().var(axis=1)
maximum = raw.get_data().max(axis=1)
minimum = raw.get_data().min(axis=1)

在上面的代码中,我们使用了get_data()函数来获取原始数据,并使用了NumPy库的函数来计算平均值、方差、最大值和最小值。

除了这些基本的时域特征,我们还可以计算一些更高级的特征,例如波形的频率、能量和谱密度等。MNE库提供了一些函数来计算这些特征。

# Computing advanced time domain features
frequency = raw.get_data().mean(axis=1)
energy = raw.get_data().var(axis=1)
spectral_density = raw.get_data().max(axis=1)

在上面的代码中,我们将平均值、方差和最大值等特征与频率、能量和谱密度等特征进行演示。实际上,提取哪些特征取决于你的需求和研究目的。

最后,我们可以将提取的特征映射到原始的时间轴上,以便进行更进一步的分析和可视化。

import numpy as np
import matplotlib.pyplot as plt

# Creating time axis
time_axis = np.arange(raw.n_times) / raw.info['sfreq']

# Plotting the extracted features
fig, axs = plt.subplots(4, 1, figsize=(10, 10))
axs[0].plot(time_axis, mean)
axs[0].set_title("Mean")
axs[1].plot(time_axis, variance)
axs[1].set_title("Variance")
axs[2].plot(time_axis, maximum)
axs[2].set_title("Maximum")
axs[3].plot(time_axis, minimum)
axs[3].set_title("Minimum")
plt.tight_layout()
plt.show()

在上面的代码中,我们使用Matplotlib库来绘制提取的时域特征。我们创建一个包含4个子图的画布,并分别绘制了均值、方差、最大值和最小值等特征。最后,我们使用tight_layout()函数来避免子图之间的重叠,并使用show()函数来显示绘制的图形。

这只是一个简单的例子,演示了如何使用MNE数据集提取脑电图中的时域特征。实际上,MNE库还提供了许多其他功能,例如频域分析、时间频率分析等,可以进行更深入的脑电图数据分析和研究。