scipy.signal.

abcd_normalize#

scipy.signal.abcd_normalize(A=None, B=None, C=None, D=None)[source]#

Check state-space matrices compatibility and ensure they are 2d arrays.

Converts input matrices into two-dimensional arrays as needed. Then the dimensions n, q, p are determined by investigating the non-zero entries of the array shapes. If a parameter is None, or has shape (0, 0), it is set to a zero-array of compatible shape. Finally, it is verified that all parameter shapes are compatible to each other. If that fails, a ValueError is raised. Note that the dimensions n, q, p are allowed to be zero.

Parameters:
A: array_like, optional

Two-dimensional array of shape (n, n).

B: array_like, optional

Two-dimensional array of shape (n, p).

C: array_like, optional

Two-dimensional array of shape (q, n).

D: array_like, optional

Two-dimensional array of shape (q, p).

Returns:
A, B, C, Darray

State-space matrices as two-dimensional arrays.

Raises:
ValueError

If the dimensions n, q, or p could not be determined or if the shapes are incompatible with each other.

See also

StateSpace

Linear Time Invariant system in state-space form.

dlti

Discrete-time linear time invariant system base class.

tf2ss

Transfer function to state-space representation.

ss2tf

State-space to transfer function.

ss2zpk

State-space representation to zero-pole-gain representation.

cont2discrete

Transform a continuous to a discrete state-space system.

Notes

The State-space system representation section of the SciPy User Guide presents the corresponding definitions of continuous-time and disrcete time state space systems.

Examples

The following example demonstrates that the passed lists are converted into two-dimensional arrays:

>>> from scipy.signal import abcd_normalize
>>> AA, BB, CC, DD = abcd_normalize(A=[[1, 2], [3, 4]], B=[[-1], [5]],
...                                 C=[[4, 5]], D=2.5)
>>> AA.shape, BB.shape, CC.shape, DD.shape
((2, 2), (2, 1), (1, 2), (1, 1))

In the following, the missing parameter C is assumed to be an array of zeros with shape (1, 2):

>>> from scipy.signal import abcd_normalize
>>> AA, BB, CC, DD = abcd_normalize(A=[[1, 2], [3, 4]], B=[[-1], [5]], D=2.5)
>>> AA.shape, BB.shape, CC.shape, DD.shape
((2, 2), (2, 1), (1, 2), (1, 1))
>>> CC
array([[0., 0.]])