scipy.signal.
iirnotch#
- scipy.signal.iirnotch(w0, Q, fs=2.0)[原始碼]#
設計二階 IIR 陷波數位濾波器。
陷波濾波器是一種帶阻濾波器,具有窄頻寬(高品質因數)。它會抑制一個窄頻帶,並使頻譜的其餘部分幾乎保持不變。
- 參數:
- w0float
要從訊號中移除的頻率。如果指定了 fs,則單位與 fs 相同。預設情況下,它是一個標準化的純量,必須滿足
0 < w0 < 1
,其中w0 = 1
對應於取樣頻率的一半。- Qfloat
品質因數。無因次參數,用於描述陷波濾波器的 -3 dB 頻寬
bw
相對於其中心頻率,Q = w0/bw
。- fsfloat, 選填
數位系統的取樣頻率。
在版本 1.2.0 中新增。
- 回傳值:
- b, andarray, ndarray
IIR 濾波器的分子 (
b
) 和分母 (a
) 多項式。
另請參閱
註解
在版本 0.19.0 中新增。
參考文獻
[1]Sophocles J. Orfanidis,《Introduction To Signal Processing》,Prentice-Hall,1996
範例
設計並繪製濾波器,以移除從 200 Hz 取樣訊號中的 60 Hz 成分,使用品質因數 Q = 30
>>> from scipy import signal >>> import matplotlib.pyplot as plt >>> import numpy as np
>>> fs = 200.0 # Sample frequency (Hz) >>> f0 = 60.0 # Frequency to be removed from signal (Hz) >>> Q = 30.0 # Quality factor >>> # Design notch filter >>> b, a = signal.iirnotch(f0, Q, fs)
>>> # Frequency response >>> freq, h = signal.freqz(b, a, fs=fs) >>> # Plot >>> fig, ax = plt.subplots(2, 1, figsize=(8, 6)) >>> ax[0].plot(freq, 20*np.log10(abs(h)), color='blue') >>> ax[0].set_title("Frequency Response") >>> ax[0].set_ylabel("Amplitude [dB]", color='blue') >>> ax[0].set_xlim([0, 100]) >>> ax[0].set_ylim([-25, 10]) >>> ax[0].grid(True) >>> ax[1].plot(freq, np.unwrap(np.angle(h))*180/np.pi, color='green') >>> ax[1].set_ylabel("Phase [deg]", color='green') >>> ax[1].set_xlabel("Frequency [Hz]") >>> ax[1].set_xlim([0, 100]) >>> ax[1].set_yticks([-90, -60, -30, 0, 30, 60, 90]) >>> ax[1].set_ylim([-90, 90]) >>> ax[1].grid(True) >>> plt.show()