tf2zpk#
- scipy.signal.tf2zpk(b, a)[источник]#
Вернуть представление нулей, полюсов, усиления (z, p, k) из представления числителя и знаменателя линейного фильтра.
- Параметры:
- barray_like
Коэффициенты полинома числителя.
- aarray_like
Коэффициенты полинома знаменателя.
- Возвращает:
- zndarray
Нули передаточной функции.
- pndarray
Полюса передаточной функции.
- kfloat
Системное усиление.
Примечания
Если некоторые значения b слишком близки к 0, они удаляются. В этом случае генерируется предупреждение BadCoefficients.
The b и a массивы интерпретируются как коэффициенты для положительных, убывающих степеней переменной передаточной функции. Таким образом, входные данные \(b = [b_0, b_1, ..., b_M]\) и \(a =[a_0, a_1, ..., a_N]\) может представлять аналоговый фильтр вида:
\[H(s) = \frac {b_0 s^M + b_1 s^{(M-1)} + \cdots + b_M} {a_0 s^N + a_1 s^{(N-1)} + \cdots + a_N}\]или дискретно-временной фильтр вида:
\[H(z) = \frac {b_0 z^M + b_1 z^{(M-1)} + \cdots + b_M} {a_0 z^N + a_1 z^{(N-1)} + \cdots + a_N}\]Эта форма «положительных степеней» чаще встречается в технике управления. Если M и N равны (что верно для всех фильтров, сгенерированных билинейным преобразованием), то это оказывается эквивалентным форме с "отрицательными степенями" в дискретном времени, предпочитаемой в ЦОС:
\[H(z) = \frac {b_0 + b_1 z^{-1} + \cdots + b_M z^{-M}} {a_0 + a_1 z^{-1} + \cdots + a_N z^{-N}}\]Хотя это верно для обычных фильтров, помните, что это неверно в общем случае. Если M и N не равны, коэффициенты дискретно-временной передаточной функции должны сначала быть преобразованы в форму «положительных степеней» перед нахождением полюсов и нулей.
Примеры
Найти нули, полюсы и коэффициент усиления фильтра с передаточной функцией
\[H(s) = \frac{3s^2}{s^2 + 5s + 13}\]>>> from scipy.signal import tf2zpk >>> tf2zpk([3, 0, 0], [1, 5, 13]) ( array([ 0. , 0. ]), array([ -2.5+2.59807621j , -2.5-2.59807621j]), 3.0)