control.tf2ss

control.tf2ss(sys)[source]

Transform a transfer function to a state space system.

The function accepts either 1 or 2 parameters:

tf2ss(sys)

Convert a transfer function into space space form. Equivalent to ss(sys).

tf2ss(num, den)

Create a state space system from its numerator and denominator polynomial coefficients.

For details see: tf()

Parameters
  • sys (LTI (StateSpace or TransferFunction)) – A linear system

  • num (array_like, or list of list of array_like) – Polynomial coefficients of the numerator

  • den (array_like, or list of list of array_like) – Polynomial coefficients of the denominator

  • inputs (str, or list of str, optional) – List of strings that name the individual signals of the transformed system. If not given, the inputs and outputs are the same as the original system.

  • outputs (str, or list of str, optional) – List of strings that name the individual signals of the transformed system. If not given, the inputs and outputs are the same as the original system.

  • name (string, optional) – System name. If unspecified, a generic name <sys[id]> is generated with a unique integer id.

  • method (str, optional) – Set the method used for computing the result. Current methods are ‘slycot’ and ‘scipy’. If set to None (default), try ‘slycot’ first and then ‘scipy’ (SISO only).

Returns

out – New linear system in state space form

Return type

StateSpace

Raises
  • ValueError – if num and den have invalid or unequal dimensions, or if an invalid number of arguments is passed in

  • TypeError – if num or den are of incorrect type, or if sys is not a TransferFunction object

See also

ss, tf, ss2tf

Notes

The slycot routine used to convert a transfer function into state space form appears to have a bug and in some (rare) instances may not return a system with the same poles as the input transfer function. For SISO systems, setting method=scipy can be used as an alternative.

Examples

>>> num = [[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]
>>> den = [[[9., 8., 7.], [6., 5., 4.]], [[3., 2., 1.], [-1., -2., -3.]]]
>>> sys1 = ct.tf2ss(num, den)
>>> sys_tf = ct.tf(num, den)
>>> sys2 = ct.tf2ss(sys_tf)