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 аргументами. Следующее дает количество входных аргументов и их интерпретацию:1:
ltiилиdltiсистема: (StateSpace,TransferFunctionилиZerosPolesGain)4: array_like: (A, B, C, D)
- 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.Смотрите также
Примечания
Изменение значения свойств, которые не являются частью
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 )