nengolib.signal.pole_zero_cancel

nengolib.signal.pole_zero_cancel(sys, tol=1e-08)[source]

Pole/zero cancellation within a given tolerance.

Sometimes referred to as the minimal realization in state-space. [1] This (greedily) finds pole-zero pairs within a given tolerance, and removes them from the transfer function representation.

Parameters:
sys : linear_system_like

Linear system representation.

tol : float, optional

Absolute tolerance to identify pole-zero pairs. Defaults to 1e-8.

Returns:
reduced_sys : LinearSystem

Reduced linear system in zero-pole-gain form.

References

[1]http://www.mathworks.com/help/control/ref/minreal.html

Examples

See Linear System Model Reduction for a notebook example.

>>> from nengolib.signal import pole_zero_cancel, s
>>> sys = (s - 1) / ((s - 1) * (s + 1))
>>> assert pole_zero_cancel(sys) == 1 / (s + 1)