Accelerating the pace of engineering and science

# Documentation Center

• Trial Software
• Product Updates

# minreal

Minimal realization or pole-zero cancelation

## 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.
```

## More About

expand all

### 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.

## See Also

Was this topic helpful?