cupyx.scipy.signal.group_delay#

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

Compute the group delay of a digital filter.

The group delay measures by how many samples amplitude envelopes of various spectral components of a signal are delayed by a filter. It is formally defined as the derivative of continuous (unwrapped) phase:

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

Parameters:
• system (tuple of array_like (b, a)) – Numerator and denominator coefficients of a filter transfer function.

• w ({None, int, array_like}, optional) –

If a single integer, then compute at that many frequencies (default is N=512).

If an array_like, compute the delay at the frequencies given. These are in the same units as fs.

• whole (bool, optional) – Normally, frequencies are computed from 0 to the Nyquist frequency, fs/2 (upper-half of unit-circle). If whole is True, compute frequencies from 0 to fs. Ignored if w is array_like.

• fs (float, optional) – The sampling frequency of the digital system. Defaults to 2*pi radians/sample (so w is from 0 to pi).

Returns:

• w (ndarray) – The frequencies at which group delay was computed, in the same units as fs. By default, w is normalized to the range [0, pi) (radians/sample).

• gd (ndarray) – The group delay.

freqz

Frequency response of a digital filter

Notes

The similar function in MATLAB is called grpdelay.

If the transfer function $$H(z)$$ has zeros or poles on the unit circle, the group delay at corresponding frequencies is undefined. When such a case arises the warning is raised and the group delay is set to 0 at those frequencies.

For the details of numerical computation of the group delay refer to [1].

References