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
tfwith cell array arguments
Concatenation of SISO Models
Consider the following single-input, two-output transfer function.
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 Cell Arrays 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
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.