Linearizing Models

The Simulink® product provides the ``` linmod```, `linmod2`, and `dlinmod` functions to extract linear state-space models from Simulink models. However, these functions provide only basic linearization functionality. For full linearization functionality, use Simulink Control Design™ software. For more information, see Choose Linearization Tools (Simulink Control Design).

The `linmod`, `linmod2`, and `dlinmod` functions extract linear models in the form of the state-space matrices A, B, C, and D. State-space matrices describe the linear input-output relationship as

`$\begin{array}{l}\stackrel{˙}{x}=Ax+Bu\\ y=Cx+Du,\end{array}$`

where x, u, and y are state, input, and output vectors, respectively. For example, the following model is called `lmod`.

To extract the linear model of this system, enter this command.

```[A,B,C,D] = linmod('lmod') A = -2 -1 -1 1 0 0 0 1 -1 B = 1 0 0 C = 0 1 0 0 0 -1 D = 0 1 ```

Inputs and outputs must be defined using Inport and Outport blocks from the Ports & Subsystems library. Source and sink blocks do not act as inputs and outputs. Inport blocks can be used in conjunction with source blocks, using a Sum block. Once the data is in the state-space form or converted to an LTI object, you can apply functions in the Control System Toolbox™ product for further analysis:

• Conversion to an LTI object

```sys = ss(A,B,C,D); ```
• Bode phase and magnitude frequency plot

```bode(A,B,C,D) or bode(sys) ```
• Linearized time response

```step(A,B,C,D) or step(sys) impulse(A,B,C,D) or impulse(sys) lsim(A,B,C,D,u,t) or lsim(sys,u,t) ```

You can use other functions in the Control System Toolbox and the Robust Control Toolbox™ products for linear control system design.

When the model is nonlinear, an operating point can be chosen at which to extract the linearized model. Extra arguments to `linmod` specify the operating point.

```[A,B,C,D] = linmod('sys', x, u) ```

For discrete systems or mixed continuous and discrete systems, use the function `dlinmod` for linearization. This function has the same calling syntax as `linmod` except that the second right-hand argument must contain a sample time at which to perform the linearization.