问题描述
我正在尝试分块过滤一个非常大的时间序列。我将块传递给一个函数 butter_bandpass_filter (如下)。每个块都需要一个初始过滤条件数组 (zi),但第一个块没有 zi。我希望这个函数能够为第一个块生成一个,然后注意到我正在为其余的块传递一个,而不必费心计算它们。
现在,这运行,但我收到错误:
:12: FutureWarning: 元素比较失败;改为返回标量,但将来会执行元素比较 如果 zi == "init":
大概是因为在第一个块之后,它将我在参数中提供的字符串与之后传递给它的 numpy 数组进行比较。有没有更聪明的方法来做到这一点,不会出现这个错误?
这是我的第一篇 SO 帖子,对我违反的约定提前表示歉意。 :p
from scipy.signal import butter,lfilter,lfilter_zi
def butter_bandpass(lowcut,highcut,fs,order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b,a = butter(order,[low,high],btype='band')
return b,a
def butter_bandpass_filter(data,lowcut,zi="init",order=5):
b,a = butter_bandpass(lowcut,order=order)
if zi == "init":
zi = lfilter_zi(b,a)
return lfilter(b,a,data,zi=zi)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)