基於Python的FIR濾波器

2021-10-14 04:16:32 字數 1784 閱讀 6380

import numpy as np

from scipy.fftpack import fft

from scipy import signal

import matplotlib.pyplot as plt

from matplotlib.pylab import mpl

mpl.rcparams[

'font.sans-serif']=

['simhei'

]#顯示中文

mpl.rcparams[

'axes.unicode_minus']=

false

#顯示負號

n =1024

#取樣點的個數

x = np.arange(0,

2*np.pi,

2*np.pi/n)

#產生頻率為120、500、10hz的訊號進行模擬

y =7

* np.sin(

120*x)+5

* np.sin(

500* x)+9

* np.sin(

10* x)

w = np.arange(

0,n,1)

#頻域軸

b1 = signal.firwin(n,2*

100/n, window=

'hamming'

)#哈明窗,截至頻率100hz

w1, h = signal.freqz(b1)

#求頻響

plt.figure(1)

plt.title(

"頻率響應"

)plt.plot(w1/

2/np.pi*n,

20*np.log10(np.

abs(h)

+0.01))

b2 = signal.firwin(n,2*

100/n, window=

'hanning'

)#漢寧窗,截至頻率100hz

w1, h = signal.freqz(b2)

#求頻響

plt.figure(2)

plt.title(

"頻率響應"

)plt.plot(w1/

2/np.pi*n,

20*np.log10(np.

abs(h)

+0.01))

b3 = signal.firwin(n,2*

100/n, window=

'blackman'

)#布萊克曼窗,截至頻率100hz

w1, h = signal.freqz(b3)

#求頻響

plt.figure(3)

plt.title(

"頻率響應"

)plt.plot(w1/

2/np.pi*n,

20*np.log10(np.

abs(h)

+0.01))

b4 = signal.firwin(n,2*

100/n, window=

'boxcar'

)#矩形窗,截至頻率100hz

w1, h = signal.freqz(b4)

#求頻響

plt.figure(4)

plt.title(

"頻率響應"

)plt.plot(w1/

2/np.pi*n,

20*np.log10(np.

abs(h)

+0.01))

plt.show(

)

FIR濾波器與IIR濾波器

有限長單位衝激響應濾波器,又稱為非遞迴型濾波器 特點 fir濾波器的最主要的特點是沒有反饋迴路,穩定性強,故不存在不穩定的問題 fir具有嚴格的線性相位,幅度特性隨意設定的同時,保證精確的線性相位 fir設計方式是線性的,硬體容易實現 fir相對iir濾波器而言,相同效能指標時,階次較高,對cpu的...

FIR濾波器設計

fir濾波器的優越性 相位對應為嚴格的線性,不存在延遲失真,僅僅有固定的時間延遲 因為不存在穩定性問題,設計相對簡單 僅僅包括實數演算法,不涉及複數演算法,不須要遞推運算,長度為m,階數為m 1,計算值約為m 2。關於fir濾波器的幅頻特性和相頻特性。在人們不關心相位時,能夠讓幅頻特性常為正,原來為...

FIR濾波器設計

該文件為了說明fir濾波器,iir濾波器的原理,數學含義,設計方法 一 原理 1 fir有限衝擊響應,iir無限衝擊響應。前者無反饋,只與當前和歷史輸入有關,後者有反饋,不僅與當前和歷史輸入有關,還與歷史輸出有關。fir輸出相位線性,設計簡單,但是階數更高 iir輸出相位不線性,設計困難,但相同效能...