minreal
Minimal realization or pole-zero cancellation
Syntax
sysr = minreal(sys)
sysr = minreal(sys,tol)
[sysr,u] = minreal(sys,tol)
... = minreal(sys,tol,false)
...
= minreal(sys,[],false)
Description
sysr = minreal(sys)
eliminates
uncontrollable or unobservable state in state-space
models, or cancels pole-zero pairs in transfer functions or zero-pole-gain
models. The output sysr
has minimal order and the
same response characteristics as the original model sys
.
sysr = minreal(sys,tol)
specifies the tolerance used for state elimination or pole-zero cancellation.
The default value is tol = sqrt(eps)
and increasing
this tolerance forces additional cancellations.
[sysr,u] = minreal(sys,tol)
returns, for
state-space model sys
, an orthogonal matrix U
such
that (U*A*U',U*B,C*U')
is a Kalman decomposition
of (A
,B
,C
)
... = minreal(sys,tol,false)
and ...
= minreal(sys,[],false)
disable the verbose output of the
function. By default, minreal
displays a message
indicating the number of states removed from a state-space model sys
.
Examples
The commands
g = zpk([],1,1); h = tf([2 1],[1 0]); cloop = inv(1+g*h) * g
produce the nonminimal zero-pole-gain model cloop
.
cloop = s (s-1) ------------------- (s-1) (s^2 + s + 1) Continuous-time zero/pole/gain model.
To cancel the pole-zero pair at s = 1, type
cloopmin = minreal(cloop)
This command produces the following result.
cloopmin = s ------------- (s^2 + s + 1) Continuous-time zero/pole/gain model.
Algorithms
Pole-zero cancellation is a straightforward search through the poles and zeros looking for matches that are within tolerance. Transfer functions are first converted to zero-pole-gain form.
Version History
Introduced before R2006a
See Also
Model Reducer | balreal
| modred
| sminreal