You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python绘制EEG数据频谱图遇故障,求技术排查指导

EEG频谱图绘制问题排查与解决方案

1. 降采样引发的ValueError问题

问题原因

该错误本质是降采样后信号长度与原数据索引长度不匹配。如果你的EEG数据存储在带索引的结构(如Pandas DataFrame/Series)中,直接将降采样后的数组赋值回原列,会因新信号长度(原长度的1/2,256Hz→128Hz是整数倍降采样)与原索引长度不一致触发报错。

解决步骤

先将信号提取为NumPy数组处理,完成后重新匹配索引或创建新数据结构:

import numpy as np
import pandas as pd
from scipy import signal

# 假设原始数据存在df中,TP9为目标通道
raw_signal = df['TP9'].values
fs_orig = 256
fs_target = 128

# 带通滤波:用filtfilt避免相位偏移,butter阶数设为4(常用值)
b, a = signal.butter(4, [1, 50], btype='bandpass', fs=fs_orig)
filtered_signal = signal.filtfilt(b, a, raw_signal)

# 整数倍降采样用decimate更高效(q=2对应2倍降采样)
downsampled_signal = signal.decimate(filtered_signal, q=2, ftype='iir')

# 生成匹配的时间索引,或截断原索引到新长度
new_time = np.linspace(0, len(raw_signal)/fs_orig, len(downsampled_signal))
processed_df = pd.DataFrame({'TP9': downsampled_signal}, index=new_time)

注意:若用signal.resample,需指定目标长度len(raw_signal)//2,但整数倍降采样优先选decimate,它会先做抗混叠滤波(你已提前做50Hz低通,也可省略内部滤波,但保留也不影响)。

2. 频谱图无信号显示问题

可能原因

  • 信号处理后幅值过小或全零(滤波/降采样参数错误)
  • signal.spectrogram参数设置不合理(窗口大小、重叠率、频率范围)
  • 绘图时未正确转换数据格式或过滤无效频率

解决步骤

第一步:验证处理后信号有效性

先绘制时域图确认信号未丢失:

import matplotlib.pyplot as plt
plt.plot(processed_df.index, processed_df['TP9'])
plt.title('TP9 Processed EEG Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.show()

第二步:正确绘制频谱图

使用合适的参数计算并绘制频谱图,重点关注频率范围和功率转换:

fs = 128
# 设置窗口大小为128(2的幂次,提升FFT效率),重叠率50%
f, t, Sxx = signal.spectrogram(
    processed_df['TP9'].values,
    fs=fs,
    nperseg=128,
    noverlap=64,
    scaling='density'
)

# 只显示0-50Hz的有效频率(对应你的滤波上限),转换为dB便于观察
plt.pcolormesh(t, f[f<=50], 10*np.log10(Sxx[f<=50]), cmap='viridis')
plt.ylabel('Frequency (Hz)')
plt.xlabel('Time (s)')
plt.title('TP9 EEG Spectrogram')
plt.colorbar(label='Power Spectral Density (dB/Hz)')
plt.ylim(0, 50)
plt.show()

注意:

  • 若Sxx全零,检查滤波时btype是否设为bandpass,fs参数是否传入原始采样率
  • 调整nperseg大小:值越大频率分辨率越高、时间分辨率越低,反之亦然,可根据需求微调(如64、256)

内容的提问来源于stack exchange,提问作者José Antonio Morán Rodríguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:44:56