Categories &

Functions List

Function Reference: @lti/zero

Function File: z = zero (sys)
Function File: z = zero (sys, type)
Function File: [z, k, info] = zero (sys)

Compute zeros and gain of LTI model. By default, zero computes the invariant zeros, also known as Smith zeros. Alternatively, when called with a second input argument, zero can also compute the system zeros, transmission zeros, input decoupling zeros and output decoupling zeros. See paper [1] for an explanation of the various zero flavors as well as for further details.



LTI model.


String specifying the type of zeros:

’system’, ’s’

Compute the system zeros. The system zeros include in all cases (square, non-square, degenerate or non-degenerate system) all transmission and decoupling zeros.

’invariant’, ’inv’

Compute invariant zeros. Default selection.

’transmission’, ’t’

Compute transmission zeros. Transmission zeros are a subset of the invariant zeros. The transmission zeros are the zeros of the Smith-McMillan form of the transfer function matrix.

’input’, ’inp’, ’id’

Compute input decoupling zeros. The input decoupling zeros are also known as the uncontrollable eigenvalues of the pair (A,B).

’output’, ’o’, ’od’

Compute output decoupling zeros. The output decoupling zeros are also known as the unobservable eigenvalues of the pair (A,C).



Depending on argument type, z contains the invariant (default), system, transmission, input decoupling or output decoupling zeros of sys as defined in [1].


Gain of SISO system sys. For MIMO systems, an empty matrix [] is returned.


Struct containing additional information. For details, see the documentation of SLICOT routines AB08ND and AG08BD.


The normal rank of the transfer function matrix (regular state-space models) or of the system pencil (descriptor state-space models).


Contains information on the infinite elementary divisors as follows: the system has info.infz(i) infinite elementary divisors of degree i, where i=1,2,...,length(info.infz).


Right Kronecker (column) indices.


Left Kronecker (row) indices.


 [z, k, info] = zero (sys)        # invariant zeros
 z = zero (sys, 'system')         # system zeros
 z = zero (sys, 'invariant')      # invariant zeros
 z = zero (sys, 'transmission')   # transmission zeros
 z = zero (sys, 'output')         # output decoupling zeros
 z = zero (sys, 'input')          # input decoupling zeros

For (descriptor) state-space models, zero uses SLICOT AB08ND and AG08BD, Copyright (c) 2020, SLICOT, available under the BSD 3-Clause (License and Disclaimer). For SISO transfer functions, zero uses Octave’s roots. MIMO transfer functions are converted to a minimal state-space representation for the computation of the zeros.

[1] MacFarlane, A. and Karcanias, N. Poles and zeros of linear multivariable systems: a survey of the algebraic, geometric and complex-variable theory. Int. J. Control, vol. 24, pp. 33-74, 1976.
[2] Rosenbrock, H.H. Correction to ’The zeros of a system’. Int. J. Control, vol. 20, no. 3, pp. 525-527, 1974.
[3] Svaricek, F. Computation of the structural invariants of linear multivariable systems with an extended version of the program ZEROS. Systems & Control Letters, vol. 6, pp. 261-266, 1985.
[4] Emami-Naeini, A. and Van Dooren, P. Computation of zeros of linear multivariable systems. Automatica, vol. 26, pp. 415-430, 1982.

Source Code: @lti/zero