scipy.signal.

StateSpace#

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

Линейная инвариантная во времени система в форме пространства состояний.

Представляет систему как непрерывное дифференциальное уравнение первого порядка \(\dot{x} = A x + B u\) или разностное уравнение дискретного времени \(x[k+1] = A x[k] + B u[k]\). StateSpace системы наследуют дополнительную функциональность от lti, соответственно dlti классы, в зависимости от того, какое представление системы используется.

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

The StateSpace класс может быть создан с 1 или 4 аргументами. Следующее дает количество входных аргументов и их интерпретацию:

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

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

Атрибуты:
A

Матрица состояния StateSpace система.

B

Входная матрица StateSpace система.

C

Выходная матрица StateSpace система.

D

Матрица сквозной передачи StateSpace система.

dt

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

poles

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

zeros

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

Методы

__mul__(other)

Пост-умножение другой системы или скаляра

to_ss()

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

to_tf(**kwargs)

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

to_zpk(**kwargs)

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

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

TransferFunction, ZerosPolesGain, lti, dlti
ss2zpk, ss2tf, zpk2sos

Примечания

Изменение значения свойств, которые не являются частью StateSpace представление системы (например, zeros или poles) очень неэффективно и может привести к численным неточностям. Лучше сначала преобразовать в конкретное представление системы. Например, вызвать sys = sys.to_zpk() перед доступом/изменением нулей, полюсов или усиления.

Примеры

>>> 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
)