Почему он возвращает nan при использовании scipy.signal.filtfilt - PullRequest
0 голосов
/ 09 мая 2018

У меня есть массив дат, частота дискретизации которого составляет 160 ГГц, и я хочу применить к данным полосовой фильтр 30 кГц-100 кГц. Я пишу следующее:

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)

Тем не менее, результатом является нан. Но если я уменьшу частоту дискретизации, это сработает:

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)

Таким образом, я могу получить правильный результат, но анализ действительно грубый. Таким образом, кажется, что хотя частота фильтра намного ниже частоты дискретизации, фильтр Баттерворта не может работать правильно. Как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...