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

# ss2tf

scipy.signal.ss2tf(A, B, C, D, input=0)

  State-space to transfer function.

  A, B, C, D defines a linear state-space system with p inputs, q outputs, and n state variables.

  Parameters:
    A array_like

      State (or system) matrix of shape `(n, n)`

    B array_like

      Input matrix of shape `(n, p)`

    C array_like

      Output matrix of shape `(q, n)`

    D array_like

      Feedthrough (or feedforward) matrix of shape `(q, p)`

    input int, optional

      For multiple-input systems, the index of the input to use.

  Returns:
    num 2-D ndarray

      Numerator(s) of the resulting transfer function(s). num has one row for each of the system’s outputs. Each row is a sequence representation of the numerator polynomial.

    den 1-D ndarray

      Denominator of the resulting transfer function(s). den is a sequence representation of the denominator polynomial.

  Notes

  Array API Standard Support

  `ss2tf` has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable `SCIPY_ARRAY_API=1` and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

  Library | CPU | GPU
  --- | --- | ---
  NumPy | ✅ | n/a
  CuPy | n/a | ⛔
  PyTorch | ⛔ | ⛔
  JAX | ⛔ | ⛔
  Dask | ⛔ | n/a

  > See Support for the array API standard for more information.

  Examples

  Convert the state-space representation:

  \[ \begin{align}\begin{aligned}\begin{split}\dot{\textbf{x}}(t) = \begin{bmatrix} -2 & -1 \\ 1 & 0 \end{bmatrix} \textbf{x}(t) + \begin{bmatrix} 1 \\ 0 \end{bmatrix} \textbf{u}(t) \\\end{split}\\\textbf{y}(t) = \begin{bmatrix} 1 & 2 \end{bmatrix} \textbf{x}(t) + \begin{bmatrix} 1 \end{bmatrix} \textbf{u}(t)\end{aligned}\end{align} \]

      >>> A = [[-2, -1], [1, 0]]
      >>> B = [[1], [0]]  # 2-D column vector
      >>> C = [[1, 2]]    # 2-D row vector
      >>> D = 1

  to the transfer function:

  \[H(s) = \frac{s^2 + 3s + 3}{s^2 + 2s + 1}\]

      >>> from scipy.signal import ss2tf
      >>> ss2tf(A, B, C, D)
      (array([[1., 3., 3.]]), array([ 1.,  2.,  1.]))