scipy.signal.

cheb2ord#

scipy.signal.cheb2ord(wp, ws, gpass, gstop, analog=False, fs=None)[source]#

Chebyshev II 型濾波器階數選擇。

傳回最低階數位或類比 Chebyshev II 型濾波器的階數,該濾波器在通帶中的損失不超過 gpass dB,且在阻帶中至少有 gstop dB 的衰減。

參數:
wp, wsfloat

通帶和阻帶邊緣頻率。

對於數位濾波器,這些與 fs 的單位相同。 預設情況下,fs 為 2 半週期/樣本,因此這些值已標準化為 0 到 1,其中 1 為奈奎斯特頻率。(wpws 因此單位為半週期/樣本。) 例如

  • 低通:wp = 0.2, ws = 0.3

  • 高通:wp = 0.3, ws = 0.2

  • 帶通:wp = [0.2, 0.5], ws = [0.1, 0.6]

  • 帶阻:wp = [0.1, 0.6], ws = [0.2, 0.5]

對於類比濾波器,wpws 是角頻率(例如,rad/s)。

gpassfloat

通帶中的最大損失 (dB)。

gstopfloat

阻帶中的最小衰減 (dB)。

analogbool, optional

當為 True 時,傳回類比濾波器,否則傳回數位濾波器。

fsfloat, optional

數位系統的取樣頻率。

在 1.2.0 版本中新增。

傳回值:
ordint

符合規格的 Chebyshev II 型濾波器的最低階數。

wnndarray or float

Chebyshev 自然頻率(「3dB 頻率」),用於 cheby2 以產生濾波器結果。 如果指定了 fs,則單位相同,且 fs 也必須傳遞給 cheby2

另請參閱

cheby2

使用階數和臨界點的濾波器設計

buttord

從通帶和阻帶規格中尋找階數和臨界點

cheb1ord, ellipord
iirfilter

使用階數和臨界頻率的通用濾波器設計

iirdesign

使用通帶和阻帶規格的通用濾波器設計

範例

設計一個數位帶阻濾波器,其在 0.2*(fs/2) 到 0.5*(fs/2) 之間抑制 -60 dB,同時保持在低於 0.1*(fs/2) 或高於 0.6*(fs/2) 的 3 dB 範圍內。 繪製其頻率響應,以灰色顯示通帶和阻帶約束。

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> N, Wn = signal.cheb2ord([0.1, 0.6], [0.2, 0.5], 3, 60)
>>> b, a = signal.cheby2(N, 60, Wn, 'stop')
>>> w, h = signal.freqz(b, a)
>>> plt.semilogx(w / np.pi, 20 * np.log10(abs(h)))
>>> plt.title('Chebyshev II bandstop filter fit to constraints')
>>> plt.xlabel('Normalized frequency')
>>> plt.ylabel('Amplitude [dB]')
>>> plt.grid(which='both', axis='both')
>>> plt.fill([.01, .1, .1, .01], [-3,  -3, -99, -99], '0.9', lw=0) # stop
>>> plt.fill([.2,  .2, .5,  .5], [ 9, -60, -60,   9], '0.9', lw=0) # pass
>>> plt.fill([.6,  .6,  2,   2], [-99, -3,  -3, -99], '0.9', lw=0) # stop
>>> plt.axis([0.06, 1, -80, 3])
>>> plt.show()
../../_images/scipy-signal-cheb2ord-1.png