MATLAB: Function ‘subsindex’ is not defined for values of class ‘ss’

MATLAB and Simulink Student Suitempcsubsindex

Dear all,
I'm creating a MPC controller and I need to create the MPC object to insert in the Simulink model. Here is the code.
%%Parameters
load('parametri.mat')
par.gyro.phid = 80;
% Gyroscope
nGyros = par.gyro.nGyros;
Ig = par.gyro.Is(1,1)*nGyros+par.gyro.Ig(2,2)*nGyros; % [kgm2]




Jg = par.gyro.Ig(1,1)*nGyros; % [kgm2]
phid = par.gyro.phid; % [rad/s]
% Hull
Ih = par.hull.FDA.M(5,5); % [kgm2]
Ainf = par.hull.FDA.Ainf(5,5); % [kgm2]
Kw = par.hull.FDA.K(5,5); % [Nm/rad]
Ieq = Ih+Ainf+par.gyro.Is(1,1)*nGyros+par.gyro.Ig(2,2)*nGyros; % [kgm2]
% Hydrodinamics - State Space Approximation
a11 = par.hull.TDM.ry.Ass(1,1);
a12 = par.hull.TDM.ry.Ass(1,2);
a13 = par.hull.TDM.ry.Ass(1,3);
a14 = par.hull.TDM.ry.Ass(1,4);
c1 = par.hull.TDM.ry.Css(1,1);
c2 = par.hull.TDM.ry.Css(1,2);
c3 = par.hull.TDM.ry.Css(1,3);
c4 = par.hull.TDM.ry.Css(1,4);
%%State Space Representation: - plant.struct
pl.Am = [ 0 0 -Jg*phid/Ig 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
Jg*phid/Ieq 0 0 -Kw/Ieq -c1/Ieq -c2/Ieq -c3/Ieq -c4/Ieq 0 1/Ieq
0 0 1 0 0 0 0 0 0 0
0 0 1 0 a11 a12 a13 a14 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 -1.5 -1 %-0.9139 -1.1424
0 0 0 0 0 0 1 0 1 0 ];
pl.Bm = [1/Ig
0
0
0
0
0
0
0
0
0 ];
mpc.delta_gain = 2;
pl.Cm = [0
1
0
-mpc.delta_gain
0
0
0
0
0
0 ]';
pl.Dm = zeros(1,1);
Ts = 0.01; %sample time [s]
states = {'epsd' 'eps' 'deltad' 'delta' 'rfv1' 'rfv2' 'rfv3' 'rfv4' 'wfv1' 'wfv2'};
inputs = {'Teps'};
outputs = {'eps'};
LinSys = ss(pl.Am,pl.Bm,pl.Cm,pl.Dm, Ts, 'statename',states,'inputname',inputs,'outputname',outputs);
pl.poles_ol = eig(pl.Am);
%%Building of the MPC controller
p = 4; %prediction time [s]
m = 4; %control time [s]
MPCobj = mpc(LinSys,Ts,p,m);
When I run the code, it appear the error
Function 'subsindex' is not defined for values of class 'ss'
Error in MPC_MatrixBuilder_augModel (line 78)
MPCobj = mpc(LinSys,Ts,p,m);
How can I fix it?
Thank you

Best Answer

Problem: You have named some variable mpc:
mpc.delta_gain = ...
which means that you cannot call the mpc function.
Solution: change the name of that variable.