scipy.signal.

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 Klassen lti bzw. dlti, abhängig von der verwendeten Systemrepräsentation.

Parameter:
*system: Argumente

Die Klasse StateSpace kann mit 1 oder 4 Argumenten instanziiert werden. Die folgende Liste 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:
A

Zustandsmatrix des StateSpace-Systems.

B

Eingangsmatrix des StateSpace-Systems.

C

Ausgangsmatrix des StateSpace-Systems.

D

Durchgriffsmatrix des StateSpace-Systems.

dt

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

poles

Pole des Systems.

zeros

Nullstellen 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.

Hinweise

Das Ändern von Eigenschaften, die nicht Teil der StateSpace-Systemrepräsentation sind (wie z.B. zeros oder poles), ist sehr ineffizient und kann zu numerischen Ungenauigkeiten führen. Es ist besser, zuerst in die spezifische Systemrepräsentation zu konvertieren. Rufen Sie beispielsweise sys = 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
)