python提取脑电PSD特征
时间: 2023-06-01 13:01:32 浏览: 488
脑电特征提取
脑电信号的功率谱密度(PSD)特征提取是脑电信号处理中的重要步骤,它可以用来描述脑电信号在不同频率上的能量分布情况,从而为后续的分类、识别和分析等任务提供基础。下面是一份Python实现的脑电PSD特征提取代码示例:
```python
import numpy as np
import scipy.signal as signal
def eeg_psd_feature_extraction(eeg_data, fs):
"""
功能:提取脑电信号的PSD特征
输入:
eeg_data:原始脑电信号数据,形状为(N, C)或(N, C, T),
其中N为样本数,C为通道数,T为采样点数(可选)
fs:采样频率
输出:
psd_feature:脑电信号的PSD特征,形状为(N, C, F),
其中N为样本数,C为通道数,F为频率分辨率
"""
# 对输入数据进行格式处理
if eeg_data.ndim == 2:
eeg_data = eeg_data[:, np.newaxis, :]
n_samples, n_channels, n_points = eeg_data.shape
# 计算PSD特征
psd_feature = np.zeros((n_samples, n_channels, n_points//2 + 1))
for i in range(n_samples):
for j in range(n_channels):
f, pxx = signal.welch(eeg_data[i, j, :], fs, nperseg=fs*2)
psd_feature[i, j, :] = pxx
return psd_feature
```
上述代码中使用了Scipy库中的`signal.welch()`函数进行PSD计算,其中`nperseg`参数表示每段信号的采样点数,这里设置为`fs*2`,即2秒的信号段。函数返回的`f`为频率分辨率,`pxx`为对应的功率谱密度值。最终输出的`psd_feature`为一个三维数组,分别表示样本数、通道数和频率分辨率。
阅读全文