scipy.signal.

group_delay#

scipy.signal.group_delay(система, w=512, целый=False, fs=6.283185307179586)[источник]#

Вычисление групповой задержки цифрового фильтра.

Групповая задержка измеряет, на сколько отсчётов задерживаются амплитудные огибающие различных спектральных компонент сигнала фильтром. Формально определяется как производная непрерывной (развёрнутой) фазы:

          d        jw
D(w) = - -- arg H(e)
         dw
Параметры:
системакортеж из array_like (b, a)

Коэффициенты числителя и знаменателя передаточной функции фильтра.

w{None, int, array_like}, optional

Если указано одно целое число, то вычисления производятся на указанном количестве частот (по умолчанию N=512).

Если массивоподобный, вычисляет задержку на заданных частотах. Они в тех же единицах, что и fs.

целыйbool, необязательно

Обычно частоты вычисляются от 0 до частоты Найквиста, fs/2 (верхняя половина единичной окружности). Если целый если 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]

Ричард Г. Лайонс, «Понимание цифровой обработки сигналов, 3-е издание», стр. 830.

[2]

Джулиус О. Смит III, «Численное вычисление групповой задержки», в «Введение в цифровые фильтры с аудиоприложениями», онлайн-книга, 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