首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Butterworth滤波器的参数设置

Butterworth滤波器的参数设置
EN

Stack Overflow用户
提问于 2021-10-26 18:37:01
回答 1查看 617关注 0票数 1

我正在处理脑电波数据,并且第一次尝试使用巴特沃斯过滤器。

在堆栈交换方面有很多有用的资源,这里(i) 蟒蛇中的Butterworth滤波器和(ii) 如何用Scipy.signal.butter实现带通巴特沃斯滤波器

利用这些资源,我实现了以下代码:

代码语言:javascript
复制
    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

我正在处理的数据位于左边的图形上,我试图过滤它的方法是在右边:

700 ms延迟期的神经活动

我认为我遇到的问题是与参数有关。

顺序:设置为5。频率响应对于5阶看起来没有问题。

低切:.5

高切: 60

FS/Sample /Waves:我们能够每秒收集500个数据点,所以我将其设置为500个

N: 350。我们正在处理700毫秒的数据,但只有每毫秒采样一次。

从我的数据来看,我们大约有两个正弦波,周期为700毫秒,再加上11个高频waves...should,我能看到这一点,并将低切设置为2,并将高切设置为大于11的某个值?我试过在这点上迭代几十个值.

谢谢任何想帮忙的人。在过去的两天里,我一直在努力想办法解决这个问题,结果还是碰壁了。

更新谢谢鲍勃和提姆!这绝对是问题所在--信号必须以零为中心。对我来说是严肃的废话。以下是最新的图表:

我不会说这些是我见过的最漂亮的正弦曲线,但这是实时数据,所以我的期望已经被缓和了。

EN

回答 1

Stack Overflow用户

发布于 2021-10-27 16:59:08

想一想,如果你用零填充你的信号会发生什么。

你就会突然跳到821000岁。

还请注意,带通滤波器在频率为0时增益为0,这意味着直流分量将被滤波,如果在滤波前从信号中减去平均值,可能会得到更好的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69728320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档