StateSpace#
- class scipy.signal.StateSpace(*system, **kwargs)[Quellcode]#
Linearzeitinvariantes System in Zustandsraumform.
Stellt das System als Differentialgleichung erster Ordnung im zeitkontinuierlichen Fall \(\dot{x} = A x + B u\) oder als Differenzgleichung im zeitdiskreten Fall \(x[k+1] = A x[k] + B u[k]\) dar.
StateSpace-Systeme erben zusätzliche Funktionalitäten von den Klassenltibzw.dlti, abhängig von der verwendeten Systemrepräsentation.- Parameter:
- *system: Argumente
Die Klasse
StateSpacekann mit 1 oder 4 Argumenten instanziiert werden. Die folgende Liste gibt die Anzahl der Eingabeargumente und ihre Interpretation an:1:
lti- oderdlti-System: (StateSpace,TransferFunctionoderZerosPolesGain)4: array_like: (A, B, C, D)
- dt: float, optional
Abtastzeit [s] der zeitdiskreten Systeme. Standardwert ist None (zeitkontinuierlich). Muss als Schlüsselwortargument angegeben werden, z.B.
dt=0.1.
- Attribute:
AZustandsmatrix des
StateSpace-Systems.BEingangsmatrix des
StateSpace-Systems.CAusgangsmatrix des
StateSpace-Systems.DDurchgriffsmatrix des
StateSpace-Systems.dtGibt die Abtastzeit des Systems zurück, bei
lti-Systemen None.polesPole des Systems.
zerosNullstellen des Systems.
Methoden
__mul__(other)Ein anderes System oder eine Skalare nachmultiplizieren
to_ss()Gibt eine Kopie des aktuellen
StateSpace-Systems zurück.to_tf(**kwargs)Konvertiert die Systemrepräsentation zu
TransferFunction.to_zpk(**kwargs)Konvertiert die Systemdarstellung zu
ZerosPolesGain.Siehe auch
Hinweise
Das Ändern von Eigenschaften, die nicht Teil der
StateSpace-Systemrepräsentation sind (wie z.B.zerosoderpoles), ist sehr ineffizient und kann zu numerischen Ungenauigkeiten führen. Es ist besser, zuerst in die spezifische Systemrepräsentation zu konvertieren. Rufen Sie beispielsweisesys = sys.to_zpk()auf, bevor Sie die Nullstellen, Pole oder den Verstärkungsfaktor zugreifen/ändern.Beispiele
>>> from scipy import signal >>> import numpy as np >>> a = np.array([[0, 1], [0, 0]]) >>> b = np.array([[0], [1]]) >>> c = np.array([[1, 0]]) >>> d = np.array([[0]])
>>> sys = signal.StateSpace(a, b, c, d) >>> print(sys) StateSpaceContinuous( array([[0, 1], [0, 0]]), array([[0], [1]]), array([[1, 0]]), array([[0]]), dt: None )
>>> sys.to_discrete(0.1) StateSpaceDiscrete( array([[1. , 0.1], [0. , 1. ]]), array([[0.005], [0.1 ]]), array([[1, 0]]), array([[0]]), dt: 0.1 )
>>> a = np.array([[1, 0.1], [0, 1]]) >>> b = np.array([[0.005], [0.1]])
>>> signal.StateSpace(a, b, c, d, dt=0.1) StateSpaceDiscrete( array([[1. , 0.1], [0. , 1. ]]), array([[0.005], [0.1 ]]), array([[1, 0]]), array([[0]]), dt: 0.1 )