python 經(jīng)典數(shù)字濾波實(shí)例
數(shù)字濾波分為 IIR 濾波,和FIR 濾波。
FIR 濾波:
import scipy.signal as signal
import numpy as np
import pylab as pl
import matplotlib.pyplot as plt
import matplotlib
from scipy import signal
b = signal.firwin(80, 0.5, window=('kaiser', 8))
w, h = signal.freqz(b)
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax1.set_title('Digital filter frequency response')
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()
運(yùn)行結(jié)果:

IIR 濾波器:
from scipy import signal
import matplotlib.pyplot as plt
import matplotlib.ticker
import numpy as np
# 藍(lán)色的是頻譜圖,綠色的是相位圖
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('Digital filter frequency response')
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()
運(yùn)行結(jié)果:

IIR 濾波器中cheyb2 濾波器的運(yùn)用
from scipy import signal
import matplotlib.pyplot as plt
import numpy as np
b, a = signal.cheby2(4, 40, 100, 'low', analog=True)
w, h = signal.freqs(b, a)
plt.semilogx(w, 20 * np.log10(abs(h)))#用于繪制折線(xiàn)圖,兩個(gè)函數(shù)的 x 軸、y 軸分別是指數(shù)型的。
#plt.plot(w, 20 * np.log10(abs(h)))
plt.title('Chebyshev Type II frequency response (rs=40)')
plt.xlabel('Frequency [radians / second]')
plt.ylabel('Amplitude [dB]')
plt.margins(0, 0.1)# not sure
plt.grid(which='both', axis='both')
t = np.linspace(0, 1, 1000, False) # 1 second
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('10 Hz and 20 Hz sinusoids')
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('After 17 Hz high-pass filter')
ax2.axis([0, 1, -2, 2])
ax2.set_xlabel('Time [seconds]')
plt.show()


以上這篇python 經(jīng)典數(shù)字濾波實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python的PIL庫(kù)給圖像進(jìn)行過(guò)濾
PIL是一個(gè)用于圖像處理的Python庫(kù),它提供了各種功能,包括加載、保存、編輯和處理圖像,你可以使用PIL庫(kù)進(jìn)行圖像縮放、裁剪、旋轉(zhuǎn)、濾鏡應(yīng)用等操作,本文將介紹如何使用Python的PIL庫(kù)給圖像進(jìn)行過(guò)濾,需要的朋友可以參考下2023-08-08
python pip安裝的包放在哪個(gè)目錄(site-packages目錄的位置)
這篇文章主要介紹了python pip安裝的包放在哪個(gè)目錄(site-packages目錄的位置),通常安裝在python安裝目錄下的lib/site-packages目錄下,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
Python利用psutil實(shí)現(xiàn)獲取硬件,網(wǎng)絡(luò)和進(jìn)程信息
Python?有一個(gè)第三方模塊叫?psutil,專(zhuān)門(mén)用來(lái)獲取操作系統(tǒng)以及硬件相關(guān)的信息,比如:CPU、磁盤(pán)、網(wǎng)絡(luò)、內(nèi)存等等。下面來(lái)看一下它的用法2022-07-07
學(xué)習(xí)Python中一些實(shí)用的庫(kù)
這篇文章主要介紹了Python學(xué)習(xí)之盤(pán)點(diǎn)一些Python中實(shí)用的庫(kù),有需要的同學(xué)可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-09-09
Python pyinstaller庫(kù)的安裝配置教程分享
pyinstaller模塊主要用于python代碼打包成exe程序直接使用,這樣在其它電腦上即使沒(méi)有python環(huán)境也是可以運(yùn)行的。本文就來(lái)和大家分享一下pyinstaller庫(kù)的安裝配置教程,希望對(duì)大家有所幫助2023-04-04
Python打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的方法
這篇文章主要介紹了Python打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的方法,實(shí)例分析了打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module 
這篇文章給大家介紹了Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pymssql‘的解決方法,如果有遇到相同問(wèn)題的朋友可以參考閱讀一下本文2023-10-10

