Documentation

## MIMO Models

### State-Space Model of Jet Transport Aircraft

This example shows how to build a MIMO model of a jet transport. Because the development of a physical model for a jet aircraft is lengthy, only the state-space equations are presented here. See any standard text in aviation for a more complete discussion of the physics behind aircraft flight.

The jet model during cruise flight at MACH = 0.8 and H = 40,000 ft. is

```A = [-0.0558 -0.9968 0.0802 0.0415 0.5980 -0.1150 -0.0318 0 -3.0500 0.3880 -0.4650 0 0 0.0805 1.0000 0]; B = [ 0.0073 0 -0.4750 0.0077 0.1530 0.1430 0 0]; C = [0 1 0 0 0 0 0 1]; D = [0 0 0 0]; ```

Use the following commands to specify this state-space model as an LTI object and attach names to the states, inputs, and outputs.

```states = {'beta' 'yaw' 'roll' 'phi'}; inputs = {'rudder' 'aileron'}; outputs = {'yaw rate' 'bank angle'}; sys_mimo = ss(A,B,C,D,'statename',states,... 'inputname',inputs,... 'outputname',outputs); ```

You can display the LTI model by typing `sys_mimo`.

```sys_mimo a = beta yaw roll phi beta -0.0558 -0.9968 0.0802 0.0415 yaw 0.598 -0.115 -0.0318 0 roll -3.05 0.388 -0.465 0 phi 0 0.0805 1 0 b = rudder aileron beta 0.0073 0 yaw -0.475 0.0077 roll 0.153 0.143 phi 0 0 c = beta yaw roll phi yaw rate 0 1 0 0 bank angle 0 0 0 1 d = rudder aileron yaw rate 0 0 bank angle 0 0 Continuous-time model. ```

The model has two inputs and two outputs. The units are radians for `beta` (sideslip angle) and `phi` (bank angle) and radians/sec for `yaw` (yaw rate) and `roll` (roll rate). The rudder and aileron deflections are in degrees.

As in the SISO case, use `tf` to derive the transfer function representation.

```tf(sys_mimo) Transfer function from input "rudder" to output... -0.475 s^3 - 0.2479 s^2 - 0.1187 s - 0.05633 yaw rate: --------------------------------------------------- s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674 0.1148 s^2 - 0.2004 s - 1.373 bank angle: --------------------------------------------------- s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674 Transfer function from input "aileron" to output... 0.0077 s^3 - 0.0005372 s^2 + 0.008688 s + 0.004523 yaw rate: --------------------------------------------------- s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674 0.1436 s^2 + 0.02737 s + 0.1104 bank angle: --------------------------------------------------- s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674 ```

### Constructing MIMO Transfer Functions

MIMO transfer functions are two-dimensional arrays of elementary SISO transfer functions. There are two ways to specify MIMO transfer function models:

• Concatenation of SISO transfer function models

• Using `tf` with cell array arguments

#### Concatenation of SISO Models

Consider the following single-input, two-output transfer function.

`$H\left(s\right)=\left[\begin{array}{c}\frac{s-1}{s+1}\\ \frac{s+2}{{s}^{2}+4s+5}\end{array}\right]$`

You can specify H(s) by concatenation of its SISO entries. For instance,

```h11 = tf([1 -1],[1 1]); h21 = tf([1 2],[1 4 5]); ```

or, equivalently,

```s = tf('s') h11 = (s-1)/(s+1); h21 = (s+2)/(s^2+4*s+5); ```

can be concatenated to form H(s).

```H = [h11; h21] ```

This syntax mimics standard matrix concatenation and tends to be easier and more readable for MIMO systems with many inputs and/or outputs.

#### Using the tf Function with Cell Arrays

Alternatively, to define MIMO transfer functions using `tf`, you need two cell arrays (say, `N` and `D`) to represent the sets of numerator and denominator polynomials, respectively. See What Is a Cell Array? (MATLAB) for more details on cell arrays.

For example, for the rational transfer matrix H(s), the two cell arrays `N` and `D` should contain the row-vector representations of the polynomial entries of

`$N\left(s\right)=\left[\frac{s-1}{s+2}\right]\text{ }\text{ }\text{ }D\left(s\right)=\left[\frac{s+1}{{s}^{2}+4s+5}\right]$`

You can specify this MIMO transfer matrix H(s) by typing

```N = {[1 -1];[1 2]}; % Cell array for N(s) D = {[1 1];[1 4 5]}; % Cell array for D(s) H = tf(N,D) ```

These commands return the following result:

```Transfer function from input to output... s - 1 #1: ----- s + 1 s + 2 #2: ------------- s^2 + 4 s + 5 ```

Notice that both `N` and `D` have the same dimensions as H. For a general MIMO transfer matrix H(s), the cell array entries `N{i,j}` and `D{i,j}` should be row-vector representations of the numerator and denominator of Hij(s), the ijth entry of the transfer matrix H(s).

### Accessing I/O Pairs in MIMO Systems

After you define a MIMO system, you can access and manipulate I/O pairs by specifying input and output pairs of the system. For instance, if `sys_mimo` is a MIMO system with two inputs and three outputs,

```sys_mimo(3,1) ```

extracts the subsystem, mapping the first input to the third output. Row indices select the outputs and column indices select the inputs. Similarly,

```sys_mimo(3,1) = tf(1,[1 0]) ```

redefines the transfer function between the first input and third output as an integrator.