我有一个时间序列(更具体地说是一个相关函数)。我想用高斯函数H:对这个信号进行带通滤波
H(w) = e^(-alpha((w-wn)/wn)^2),
其中wn是带通滤波器的中心频率,alpha是我知道的某个常数值。我将(逆)FFT应用于我的H函数:
H = np.e ** (-alfa * ((w - wn) / wn) ** 2)
H = np.fft.ifft(H)
HH = np.asarray([i1 for i1 in itertools.chain(H[len(H)/2:len(H)], H[0:len(H)/2])])
然后我要做的是使用fftconvolve:
filtered = fftconvolve(data, HH.real, mode='same'),
但我看到的"滤波信号"似乎是以2倍wn为中心的滤波频率。
正确的方法是什么?相对于时间序列的长度,我的过滤器的长度是否有限制?
也许您正在寻找的是Scipy,的高斯滤波器
from scipy.ndimage import gaussian_filter
output = gaussian_filter(input, sigma )
其中西格玛是高斯核的标准偏差。有关更多详细信息,请参阅Scipy文档。https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.gaussian_filter.html