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)。

如果是类似数组,则计算给定频率下的延迟。这些都在相同的单位内,与 fs

whole布尔值,可选

通常,频率的计算范围是从0到奈奎斯特频率fs/2(单位圆的上半部分)。如果 whole 为True,则计算0到fs之间的频率。如果w是ARRAY_LIKE,则忽略。

fs浮动,可选

数字系统的采样频率。默认为2*π弧度/采样(因此w是从0到π)。

1.2.0 新版功能.

退货
wndarray

计算群组延迟的频率,单位与 fs 。默认情况下, w 归一化为范围[0,pi)(弧度/采样)。

gdndarray

团体延迟。

参见

freqz

数字过滤的频率响应

注意事项

MATLAB中的类似函数称为 grpdelay

如果传递函数 \(H(z)\) 如果单位圆上有零点或极点,则相应频率的群延迟是未定义的。当出现这种情况时,发出警告,并且在这些频率上群延迟被设置为0。

有关群时延的数值计算的详细信息,请参阅 [1].

0.16.0 新版功能.

参考文献

1

理查德·G·莱昂斯,“理解数字信号处理”,第3版,第830页。

示例

>>> 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