我试图用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。你知道吗
有人知道我错在哪里吗?你知道吗
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐