scipy.signal.

group_delay#

scipy.signal.group_delay(system, w=512, whole=False, fs=6.283185307179586)[原始碼]#

計算數位濾波器的群組延遲。

群組延遲衡量訊號各種頻譜成分的振幅包絡線被濾波器延遲了多少個樣本。它正式定義為連續(未展開)相位的導數

          d        jw
D(w) = - -- arg H(e)
         dw
參數:
systemarray_like 元組 (b, a)

濾波器傳遞函數的分子和分母係數。

w{None, int, array_like},選用

如果是一個整數,則計算該數量頻率下的延遲(預設為 N=512)。

如果是一個 array_like,則計算給定頻率下的延遲。這些頻率的單位與 fs 相同。

wholebool,選用

通常,頻率是從 0 計算到奈奎斯特頻率 fs/2(單位圓的上半部分)。如果 whole 為 True,則計算從 0 到 fs 的頻率。如果 w 是 array_like,則忽略此參數。

fsfloat,選用

數位系統的取樣頻率。預設為 2*pi 弧度/樣本(因此 w 從 0 到 pi)。

在 1.2.0 版本中新增。

返回:
wndarray

計算群組延遲的頻率,單位與 fs 相同。預設情況下,w 正規化到範圍 [0, pi)(弧度/樣本)。

gdndarray

群組延遲。

參見

freqz

數位濾波器的頻率響應

註解

MATLAB 中類似的函數稱為 grpdelay

如果傳遞函數 \(H(z)\) 在單位圓上有零點或極點,則對應頻率的群組延遲未定義。當出現這種情況時,會發出警告,並且在這些頻率下群組延遲設定為 0。

有關群組延遲數值計算的詳細資訊,請參閱 [1][2]

在 0.16.0 版本中新增。

參考文獻

[1]

Richard G. Lyons,“Understanding Digital Signal Processing, 3rd edition”,p. 830。

[2]

Julius O. Smith III,“Numerical Computation of Group Delay”,在“Introduction to Digital Filters with Audio Applications”中,線上書籍,2007 年,https://ccrma.stanford.edu/~jos/fp/Numerical_Computation_Group_Delay.html

範例

>>> from scipy import signal
>>> b, a = signal.iirdesign(0.1, 0.3, 5, 50, ftype='cheby1')
>>> w, gd = signal.group_delay((b, a))
>>> import matplotlib.pyplot as plt
>>> plt.title('Digital filter group delay')
>>> plt.plot(w, gd)
>>> plt.ylabel('Group delay [samples]')
>>> plt.xlabel('Frequency [rad/sample]')
>>> plt.show()
../../_images/scipy-signal-group_delay-1.png