| Products & Services | Solutions | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → Control System Toolbox |
| Contents | Index |
| Learn more about Control System Toolbox |
| On this page… |
|---|
MIMO Example: State-Space Model of Jet Transport Aircraft |
You can use the same functions that apply to SISO systems to create multiple-input, multiple-output (MIMO) models. 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
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
Consider the following single-input, two-output transfer function.

You can specify
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 = [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. See Model Interconnection Functions for more details on concatenation operations for LTI systems.
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 in the MATLAB documentation for more details on cell arrays.
For example, for the rational transfer matrix
, 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
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
, the cell array
entries N{i,j} and D{i,j} should
be row-vector representations of the numerator and denominator of
, the
entry of the transfer matrix
.
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.
![]() | Linear (LTI) Models | Arrays of Linear Models | ![]() |

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |