Skip to main content
`Ctrl`+`K`
scipy.signal.

# lti

class scipy.signal.lti(*system)

  Continuous-time linear time invariant system base class.

  Parameters:
    *systemarguments

      The `lti` class can be instantiated with either 2, 3 or 4 arguments. The following gives the number of arguments and the corresponding continuous-time subclass that is created:

      > - 2: `TransferFunction`: (numerator, denominator)

      > - 3: `ZerosPolesGain`: (zeros, poles, gain)

      > - 4: `StateSpace`: (A, B, C, D)

      Each argument can be an array or a sequence.

  Attributes:
    `dt`

      Return the sampling time of the system, None for `lti` systems.

    `poles`

      Poles of the system.

    `zeros`

      Zeros of the system.

  Methods

  `bode`([w, n]) | Calculate Bode magnitude and phase data of a continuous-time system.
  `freqresp`([w, n]) | Calculate the frequency response of a continuous-time system.
  `impulse`([X0, T, N]) | Return the impulse response of a continuous-time system.
  `output`(U, T[, X0]) | Return the response of a continuous-time system to input U.
  `step`([X0, T, N]) | Return the step response of a continuous-time system.
  `to_discrete`(dt[, method, alpha]) | Return a discretized version of the current system.

  See also

  `ZerosPolesGain`, `StateSpace`, `TransferFunction`, `dlti`

  Notes

  `lti` instances do not exist directly. Instead, `lti` creates an instance of one of its subclasses: `StateSpace`, `TransferFunction` or `ZerosPolesGain`.

  If (numerator, denominator) is passed in for `*system`, coefficients for both the numerator and denominator should be specified in descending exponent order (e.g., `s^2 + 3s + 5` would be represented as `[1, 3, 5]`).

  Changing the value of properties that are not directly part of the current system representation (such as the `zeros` of a `StateSpace` system) is very inefficient and may lead to numerical inaccuracies. It is better to convert to the specific system representation first. For example, call `sys = sys.to_zpk()` before accessing/changing the zeros, poles or gain.

  Examples

      >>> from scipy import signal

      >>> signal.lti(1, 2, 3, 4)
      StateSpaceContinuous(
      array([[1]]),
      array([[2]]),
      array([[3]]),
      array([[4]]),
      dt: None
      )

  Construct the transfer function \(H(s) = \frac{5(s - 1)(s - 2)}{(s - 3)(s - 4)}\):

      >>> signal.lti([1, 2], [3, 4], 5)
      ZerosPolesGainContinuous(
      array([1, 2]),
      array([3, 4]),
      5,
      dt: None
      )

  Construct the transfer function \(H(s) = \frac{3s + 4}{1s + 2}\):

      >>> signal.lti([3, 4], [1, 2])
      TransferFunctionContinuous(
      array([3., 4.]),
      array([1., 2.]),
      dt: None
      )