当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy signal.group_delay用法及代码示例


本文简要介绍 python 语言中 scipy.signal.group_delay 的用法。

用法:

scipy.signal.group_delay(system, w=512, whole=False, fs=6.283185307179586)#

计算数字滤波器的群延迟。

群延迟通过滤波器延迟了信号的各种频谱分量的样本幅度包络的多少来衡量。它被正式定义为连续(展开)相位的导数:

d        jw
D(w) = - -- arg H(e)
         dw

参数

system 数组 (b, a) 的元组

滤波器传递函数的分子和分母系数。

w {无,int,数组},可选

如果是单个整数,则以那么多频率进行计算(默认为 N=512)。

如果是数组,计算给定频率的延迟。这些与 fs 的单位相同。

whole 布尔型,可选

通常,频率的计算范围是从 0 到奈奎斯特频率 fs/2(upper-half of unit-circle)。如果整体为真,则计算从 0 到 fs 的频率。如果 w 是 数组,则忽略。

fs 浮点数,可选

数字系统的采样频率。默认为 2*pi 弧度/样本(所以 w 是从 0 到 pi)。

返回

w ndarray

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

gd ndarray

群延迟。

注意

MATLAB 中的类似函数称为 grpdelay。

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

关于群延迟的数值计算的详细信息,请参阅[1]。

参考

[1]

Richard G. Lyons,“理解数字信号处理,第 3 版”,第 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()
scipy-signal-group_delay-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.group_delay。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。