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

脑电波数据处理中Butterworth(巴特沃斯)滤波器参数设置问题

脑电波数据Butterworth带通滤波实践

我正在处理脑电波数据,首次尝试使用Butterworth滤波器。Stack Exchange上有很多实用资源,参考相关教程我实现了如下代码:

from scipy.signal import butter, sosfilt, sosfreqz

def butter_bandpass(lowcut, highcut, fs, order=5):
    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq
    sos = butter(order, [low, high], analog=False, btype='band', output='sos')
    return sos

def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
    sos = butter_bandpass(lowcut, highcut, fs, order=order)
    y = sosfilt(sos, data)
    return y

我使用的原始数据在左侧图中,右侧是我尝试滤波后的结果:
700ms延迟期神经活动图
现有参数配置如下:

  • Order(阶数):设为5,测试得到的频率响应符合预期
  • Low-cut(低切频率):0.5
  • High-cut(高切频率):60
  • FS(采样率):每秒采集500个数据点,因此设为500
  • N(采样点数):350,对应700ms时长、每2ms采样一次的采集规则

观察原始数据可知,700ms窗口内大概有2个低频正弦波分量,叠加了11个左右的高频分量,我是否可以将低切设为2、高切设为大于11的数值?目前我已经尝试了数十组参数都没有得到理想结果,卡壳两天了,恳请大家帮忙解答。

更新:感谢Bob和Tim的帮助!问题根源完全找对了——信号需要先做零中心化处理,是我疏忽了。更新后的滤波结果见下图:
零中心化后700ms延迟期神经活动图
虽然这些正弦曲线不算非常规整,但这是实测活数据,结果已经符合我的预期了。


内容的提问来源于stack exchange,提问作者da Bears

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:24:04