如何在obspy中设置零相位带通滤波器的阶数

问题描述

我有一个关于在 obspy 中设置零相位带通滤波器阶数的问题。

我想应用一个二阶零相位滤波器,转角频率为 0.05Hz 和 0.1Hz。

我认为输入'st.filter('bandpass',freqmin=0.05,freqmax=0.1,corners=2,zerophase=True)'是正确的。

但是,我有点困惑,因为根据下面的链接,设置“zerophase=True”会导致过滤器顺序的两倍。

https://docs.obspy.org/_modules/obspy/signal/filter.html

所以我想问一下,在我的情况下设置 'corners=2' 或 'corners=1' 等是否正确。

如果有人给出答案,对我会有很大帮助。

谢谢。

解决方法

您应该指定 corners = 1

零相位滤波器的实现方式是将数据通过滤波器两次,一次向前,一次向后。这导致幅度响应加倍,但抵消了相位响应。因此,如果您期望阻带中的衰减为 12 dB/倍频程,就像在正常的二阶滤波器中一样,则指定 corners = 1。这将导致前向通过 6 dB/octave 衰减,然后反向通过 6 dB/octave。