scipy.signal.

TransferFunction#

класс scipy.signal.TransferFunction(*система, **kwargs)[источник]#

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

Представляет систему как непрерывную передаточную функцию \(H(s)=\sum_{i=0}^N b[N-i] s^i / \sum_{j=0}^M a[M-j] s^j\) или дискретно-временную передаточную функцию \(H(z)=\sum_{i=0}^N b[N-i] z^i / \sum_{j=0}^M a[M-j] z^j\), где \(b\) являются элементами числителя num, \(a\) являются элементами знаменателя den, и N == len(b) - 1, M == len(a) - 1. TransferFunction системы наследуют дополнительную функциональность от lti, соответственно dlti классы, в зависимости от того, какое представление системы используется.

Параметры:
*system: аргументы

The TransferFunction класс может быть создан с 1 или 2 аргументами. Ниже указано количество входных аргументов и их интерпретация:

dt: float, опционально

Время дискретизации [с] для дискретных систем. По умолчанию None (непрерывного времени). Должен быть указан как аргумент ключевого слова, например, dt=0.1.

Атрибуты:
den

Знаменатель TransferFunction система.

dt

Возвращает время дискретизации системы, None для lti систем.

num

Числитель TransferFunction система.

poles

Полюса системы.

zeros

Нули системы.

Методы

to_ss()

Преобразовать представление системы в StateSpace.

to_tf()

Вернуть копию текущего TransferFunction система.

to_zpk()

Преобразовать представление системы в ZerosPolesGain.

Смотрите также

ZerosPolesGain, StateSpace, lti, dlti
tf2ss, tf2zpk, tf2sos

Примечания

Изменение значения свойств, которые не являются частью TransferFunction представление системы (такое как A, B, C, D матрицы пространства состояний) очень неэффективен и может привести к числовым неточностям. Лучше сначала преобразовать в конкретное представление системы. Например, вызвать sys = sys.to_ss() перед доступом/изменением системных матриц A, B, C, D.

Если (числитель, знаменатель) передается для *system, коэффициенты как для числителя, так и для знаменателя должны быть указаны в порядке убывания степеней (например, s^2 + 3s + 5 или z^2 + 3z + 5 будет представлен как [1, 3, 5])

Примеры

Построить передаточную функцию \(H(s) = \frac{s^2 + 3s + 3}{s^2 + 2s + 1}\):

>>> from scipy import signal
>>> num = [1, 3, 3]
>>> den = [1, 2, 1]
>>> signal.TransferFunction(num, den)
TransferFunctionContinuous(
array([1., 3., 3.]),
array([1., 2., 1.]),
dt: None
)

Построить передаточную функцию \(H(z) = \frac{z^2 + 3z + 3}{z^2 + 2z + 1}\) с временем дискретизации 0.1 секунды:

>>> signal.TransferFunction(num, den, dt=0.1)
TransferFunctionDiscrete(
array([1., 3., 3.]),
array([1., 2., 1.]),
dt: 0.1
)