## MIMO State-Space Models

### MIMO Explicit State-Space Models

You create a MIMO state-space model in the same way as you create a SISO state-space model. The only difference between the SISO and MIMO cases is the dimensions of the state-space matrices. The dimensions of the B, C, and D matrices increase with the numbers of inputs and outputs as shown in the following illustration.

In this example, you create a state-space model for a rotating body with inertia tensor J, damping force F, and three axes of rotation, related as:

$\begin{array}{c}J\frac{d\omega }{dt}+F\omega =T\\ y=\omega .\end{array}$

The system input T is the driving torque. The output y is the vector of angular velocities of the rotating body.

To express this system in state-space form:

$\begin{array}{c}\frac{dx}{dt}=Ax+Bu\\ y=Cx+Du\end{array}$

rewrite it as:

$\begin{array}{c}\frac{d\omega }{dt}=-{J}^{-1}F\omega +{J}^{-1}T\\ y=\omega .\end{array}$

Then the state-space matrices are:

$A=-{J}^{-1}F,\text{ }B={J}^{-1},\text{ }C=I,\text{ }D=0.$

To create this model, enter the following commands:

J = [8 -3 -3; -3 8 -3; -3 -3 8];
F = 0.2*eye(3);
A = -J\F;
B = inv(J);
C = eye(3);
D = 0;
sys_mimo = ss(A,B,C,D);

These commands assume that J is the inertia tensor of a cube rotating about its corner, and the damping force has magnitude 0.2.

sys_mimo is an ss model.

### MIMO Descriptor State-Space Models

This example shows how to create a continuous-time descriptor (implicit) state-space model using dss.

This example uses the same rotating-body system shown in MIMO Explicit State-Space Models, where you inverted the inertia matrix J to obtain the value of the B matrix. If J is poorly-conditioned for inversion, you can instead use a descriptor (implicit) state-space model. A descriptor (implicit) state-space model is of the form:

$\begin{array}{c}E\frac{dx}{dt}=Ax+Bu\\ y=Cx+Du\end{array}$

Create a state-space model for a rotating body with inertia tensor J, damping force F, and three axes of rotation, related as:

$\begin{array}{c}J\frac{d\omega }{dt}+F\omega =T\\ y=\omega .\end{array}$

The system input T is the driving torque. The output y is the vector of angular velocities of the rotating body. You can write this system as a descriptor state-space model having the following state-space matrices:

$A=-F,\text{ }B=I,\text{ }C=I,\text{ }D=0,\text{ }E=J.$

To create this system, enter:

J = [8 -3 -3; -3 8 -3; -3 -3 8];
F = 0.2*eye(3);
A = -F;
B = eye(3);
C = eye(3);
D = 0;
E = J;
sys_mimo = dss(A,B,C,D,E)

These commands assume that J is the inertia tensor of a cube rotating about its corner, and the damping force has magnitude 0.2.

sys is an ss model with a nonempty E matrix.

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