为什么在使用scipy.signal.filtfilt时返回nan

时间:2018-05-09 13:28:19

标签: python python-2.7 scipy butterworth

我有一个采样率为160GHz的日期数组,我希望对数据应用30kHz-100kHz带通滤波器。我写如下:

import scipy.signal as dsp
import numpy as np
fs=160e9
data=np.random.rand(int(1e-4*fs))
b, a = dsp.butter(5, [30e3/(fs/2),100e3/(fs/2)],btype='band')
result=dsp.filtfilt(b,a,data)

然而,结果是nan。 但如果我像这样降低采样率,它就可以了:

import scipy.signal as dsp
import numpy as np
fs=160e9
data=np.random.rand(int(1e-4*fs))
data=data[::10000] # 100 does not work
fs=fs/10000
b, a = dsp.butter(5, [30e3/(fs/2),100e3/(fs/2)],btype='band')
result=dsp.filtfilt(b,a,data)

通过这种方式我可以获得正确的结果,但分析非常粗糙。因此,当滤波器频率远低于采样率时,Butterworth滤波器无法正常工作。我该如何解决这个问题?

0 个答案:

没有答案