介绍
小编给大家分享一下python中经典数字滤波的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
数字滤波分为IIR滤波,和冷杉滤波。
<强>杉木滤波:强>
import scipy.signal as 信号 import numpy  as np import pylab  as pl import matplotlib.pyplot  as plt import matplotlib 得到scipy import 信号 时间=b signal.firwin(0.5 80年,,,,窗口=(& # 39;kaiser # 39;,, 8)) 时间=w, h signal.freqz (b) , import matplotlib.pyplot  as plt 无花果,ax1 =, plt.subplots () ax1.set_title (& # 39; Digital filter  frequency 响应# 39;) , ax1.plot (20 w,,, *, np.log10 (abs (h)), & # 39; b # 39;) ax1.set_ylabel (& # 39; Amplitude (dB) & # 39;,,颜色=& # 39;b # 39;) ax1.set_xlabel (& # 39; Frequency (rad/样本)& # 39;) , 时间=ax2 ax1.twinx () 时间=angles np.unwrap (np.angle (h)) ax2.plot (w,角度,& # 39;舌鳎# 39;) ax2.set_ylabel (& # 39; Angle (弧度)& # 39;,,颜色=& # 39;舌鳎# 39;) ax2.grid () ax2.axis(& # 39;紧# 39;) plt.show ()
运行结果:
<强> IIR滤波器:强>
得到scipy import 信号 import matplotlib.pyplot  as plt import matplotlib.ticker import numpy  as np #,蓝色的是频谱图,绿色的是相位图 wp 0.2=, ws 0.3=, gpass =1 gstop =40 时间=system signal.iirdesign (wp, ws,, gpass,, gstop) 时间=w, h signal.freqz(*系统) 无花果,ax1 =, plt.subplots () ax1.set_title (& # 39; Digital filter  frequency 响应# 39;) ax1.plot (20 w,,, *, np.log10 (abs (h)), & # 39; b # 39;) ax1.set_ylabel (& # 39; Amplitude (dB) & # 39;,,颜色=& # 39;b # 39;) ax1.set_xlabel (& # 39; Frequency (rad/样本)& # 39;) ax1.grid () ax1.set_ylim ([-110, 10]) , nticks =8 ax1.yaxis.set_major_locator (matplotlib.ticker.LinearLocator (nticks)) , plt.show ()
运行结果:
<强> IIR滤波器中cheyb2滤波器的运用强>
得到scipy import 信号 import matplotlib.pyplot  as plt import numpy  as np 时间=b, a signal.cheby2(4, 40岁,100年,& # 39;低# 39;,,模拟=True) 时间=w, h signal.freqs (b, a) plt.semilogx (20 w,,, *, np.log10 (abs (h))) #用于绘制折线图,两个函数的,x 轴,y 轴分别是指数型的。 # plt.plot (20 w,,, *, np.log10 (abs (h))) plt.title (& # 39; Chebyshev Type  II frequency response (rs=40) & # 39;) plt.xlabel (& # 39; Frequency [/radians 第二]& # 39;) plt.ylabel (& # 39; Amplitude (dB) & # 39;) plt.margins (0, - 0.1) #, not 确定 plt.grid(=& # 39;两个# 39;,,轴=& # 39;两个# 39;) , 时间=t np.linspace(0, 1, 1000,,假),# 1,秒 时间=sig np.sin (2 * np.pi * 10 * t), +, np.sin (2 * np.pi * 20 * t) 无花果、,(ax?, ax2),=, plt.subplots (2, 1, sharex=True) ax1.plot (t),团体) ax1.set_title (& # 39; 10, Hz 以及20,Hz 正弦曲线# 39;) ax1.axis ([0,, 1,, 2,, 2]) , sos =, signal.cheby2(12日,20日,17日,& # 39;惠普# 39;,,fs=1000,,输出=& # 39;sos # 39;) 时间=filtered signal.sosfilt (sos,团体) ax2.plot (t),过滤) ax2.set_title (& # 39; After 17, Hz high-pass 过滤# 39;) ax2.axis ([0,, 1,, 2,, 2]) ax2.set_xlabel (& # 39; Time [秒]& # 39;) , plt.show ()
以上是“python中经典数字滤波的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!