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