python 经典数字滤波实例
数字滤波分为IIR滤波,和FIR滤波。
FIR滤波:
importscipy.signalassignal importnumpyasnp importpylabaspl importmatplotlib.pyplotasplt importmatplotlib fromscipyimportsignal b=signal.firwin(80,0.5,window=('kaiser',8)) w,h=signal.freqz(b) importmatplotlib.pyplotasplt fig,ax1=plt.subplots() ax1.set_title('Digitalfilterfrequencyresponse') ax1.plot(w,20*np.log10(abs(h)),'b') ax1.set_ylabel('Amplitude[dB]',color='b') ax1.set_xlabel('Frequency[rad/sample]') ax2=ax1.twinx() angles=np.unwrap(np.angle(h)) ax2.plot(w,angles,'g') ax2.set_ylabel('Angle(radians)',color='g') ax2.grid() ax2.axis('tight') plt.show()
运行结果:
IIR滤波器:
fromscipyimportsignal importmatplotlib.pyplotasplt importmatplotlib.ticker importnumpyasnp #蓝色的是频谱图,绿色的是相位图 wp=0.2 ws=0.3 gpass=1 gstop=40 system=signal.iirdesign(wp,ws,gpass,gstop) w,h=signal.freqz(*system) fig,ax1=plt.subplots() ax1.set_title('Digitalfilterfrequencyresponse') ax1.plot(w,20*np.log10(abs(h)),'b') ax1.set_ylabel('Amplitude[dB]',color='b') ax1.set_xlabel('Frequency[rad/sample]') ax1.grid() ax1.set_ylim([-110,10]) nticks=8 ax1.yaxis.set_major_locator(matplotlib.ticker.LinearLocator(nticks)) plt.show()
运行结果:
IIR滤波器中cheyb2滤波器的运用
fromscipyimportsignal importmatplotlib.pyplotasplt importnumpyasnp b,a=signal.cheby2(4,40,100,'low',analog=True) w,h=signal.freqs(b,a) plt.semilogx(w,20*np.log10(abs(h)))#用于绘制折线图,两个函数的x轴、y轴分别是指数型的。 #plt.plot(w,20*np.log10(abs(h))) plt.title('ChebyshevTypeIIfrequencyresponse(rs=40)') plt.xlabel('Frequency[radians/second]') plt.ylabel('Amplitude[dB]') plt.margins(0,0.1)#notsure plt.grid(which='both',axis='both') t=np.linspace(0,1,1000,False)#1second sig=np.sin(2*np.pi*10*t)+np.sin(2*np.pi*20*t) fig,(ax1,ax2)=plt.subplots(2,1,sharex=True) ax1.plot(t,sig) ax1.set_title('10Hzand20Hzsinusoids') ax1.axis([0,1,-2,2]) sos=signal.cheby2(12,20,17,'hp',fs=1000,output='sos') filtered=signal.sosfilt(sos,sig) ax2.plot(t,filtered) ax2.set_title('After17Hzhigh-passfilter') ax2.axis([0,1,-2,2]) ax2.set_xlabel('Time[seconds]') plt.show()
以上这篇python经典数字滤波实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。