This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Minimal realization or pole-zero cancellation


sysr = minreal(sys)
sysr = minreal(sys,tol)
[sysr,u] = minreal(sys,tol)
... = minreal(sys,tol,false)
... = minreal(sys,[],false)


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.


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^2 + s + 1)
Continuous-time zero/pole/gain model.


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.

Introduced before R2006a