scipy.signal.

TransferFunction#

class scipy.signal.TransferFunction(*system, **kwargs)[Quelle]#

Klasse für lineare zeitinvariante Systeme in Übertragungsfunktionform.

Stellt das System als kontinuierliche Übertragungsfunktion \(H(s)=\sum_{i=0}^N b[N-i] s^i / \sum_{j=0}^M a[M-j] s^j\) oder als diskrete Übertragungsfunktion \(H(z)=\sum_{i=0}^N b[N-i] z^i / \sum_{j=0}^M a[M-j] z^j\) dar, wobei \(b\) Elemente des Zählers num sind, \(a\) Elemente des Nenners den sind und N == len(b) - 1, M == len(a) - 1. TransferFunction-Systeme erben zusätzliche Funktionalität von den Klassen lti bzw. dlti, abhängig von der verwendeten Systemdarstellung.

Parameter:
*system: Argumente

Die Klasse TransferFunction kann mit 1 oder 2 Argumenten instanziiert werden. Das Folgende gibt die Anzahl der Eingabeargumente und ihre Interpretation an:

dt: float, optional

Abtastzeit [s] der zeitdiskreten Systeme. Standardwert ist None (zeitkontinuierlich). Muss als Schlüsselwortargument angegeben werden, z.B. dt=0.1.

Attribute:
den

Nenner des TransferFunction-Systems.

dt

Gibt die Abtastzeit des Systems zurück, bei lti-Systemen None.

num

Zähler des TransferFunction-Systems.

poles

Pole des Systems.

zeros

Nullstellen des Systems.

Methoden

to_ss()

Konvertiert Systemrepräsentation in StateSpace.

to_tf()

Gibt eine Kopie des aktuellen TransferFunction-Systems zurück.

to_zpk()

Konvertiert die Systemdarstellung zu ZerosPolesGain.

Hinweise

Das Ändern des Werts von Eigenschaften, die nicht Teil der TransferFunction-Systemdarstellung sind (wie die Zustandsraummatrizen A, B, C, D), ist sehr ineffizient und kann zu numerischen Ungenauigkeiten führen. Es ist besser, zuerst in die spezifische Systemdarstellung zu konvertieren. Rufen Sie zum Beispiel sys = sys.to_ss() auf, bevor Sie auf die Zustandsraummatrizen A, B, C, D zugreifen/diese ändern.

Wenn (Zähler, Nenner) für *system übergeben wird, sollten die Koeffizienten sowohl für den Zähler als auch für den Nenner in absteigender Exponentenreihenfolge angegeben werden (z. B. s^2 + 3s + 5 oder z^2 + 3z + 5 würden als [1, 3, 5] dargestellt werden)

Beispiele

Konstruieren Sie die Übertragungsfunktion \(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
)

Konstruieren Sie die Übertragungsfunktion \(H(z) = \frac{z^2 + 3z + 3}{z^2 + 2z + 1}\) mit einer Abtastzeit von 0,1 Sekunden

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