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.
Inputs
- sys
- LTI model.
- type
- 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).
Outputs
- z
- Depending on argument type, z contains the
invariant (default), system, transmission, input decoupling
or output decoupling zeros of sys as defined in [1].
- k
- Gain of SISO system sys. For MIMO
systems, an empty matrix
[] is returned.
- info
- Struct containing additional information. For details,
see the documentation of SLICOT routines
AB08ND and AG08BD.
- info.rank
- The normal rank of the transfer function matrix (regular state-space models)
or of the system pencil (descriptor state-space models).
- info.infz
- 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).
- info.kronr
- Right Kronecker (column) indices.
- info.kronl
- Left Kronecker (row) indices.
Examples
| | [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
|
Algorithm
For (descriptor) state-space models, zero
uses SLICOT AB08ND and AG08BD,
Copyright (c) 1996-2025, 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.
References
-
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.
-
Rosenbrock, H.H.
Correction to ’The zeros of a system’.
Int. J. Control, vol. 20, no. 3, pp. 525-527, 1974.
-
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.
-
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