无法扩展scipy.signal.filt.filt示例到高通fi

2024-09-27 09:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python实现一个高通过滤器scipy.signal.filt.过滤器。但是,我试图修改文档(http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.filtfilt.html)中给出的示例却没有成功。你知道吗

定义信号:

t = np.linspace(0.0, 1.0, 2001)
xlow = np.sin(10.0 * t)
xhigh = 10.0*np.sin(50. * t)
x = xlow + xhigh

定义截止频率为20 rad/s的滤波器(去除x的低频分量)并绘制其频率响应图:

b, a = signal.iirfilter(17, 20, btype='highpass', analog=True, ftype='butter')
w, h = signal.freqs(b, a)
plt.plot(w, 20.0 * np.log10(abs(h)))
plt.xscale('log')
plt.title('Butterworth filter frequency response')
plt.xlabel('Frequency [radians / second]')
plt.ylabel('Amplitude [dB]')
plt.margins(0, 0.1)
plt.grid(which='both', axis='both')
plt.show()
plt.close()

图中显示,截止速度约为20 rad/s。你知道吗

应用滤波器并根据原始信号绘制滤波信号:

y = signal.filtfilt(b, a, x, padtype='even', padlen=150)
fig = plt.figure(figsize = [10,10])
ax = fig.add_subplot(1,1,1)
ax.plot(t,x, 'b-', label='Original')
ax.plot(t,y.real, 'rs', label='Filtered')
ax.legend()
plt.xlabel("time (s)")
plt.ylabel("Signal")
plt.show()
plt.close()

不会返回错误消息,但对于所有值,过滤后的信号y都是nan+nanj。你知道吗

有人知道我错在哪里吗?你知道吗

谢谢


Tags: 过滤器signal定义信号plotnp绘制plt

热门问题