(Simulink/MPC) Unable to linearize with an if...else loop

6 views (last 30 days)
I am trying to design an MPC Control for my project but it seems that the Simulink cannot linearize my model accurately due to the presence of an embe dded-MATLAB function block containing an if...else loop.
My model looks like this: (dunno how to upload photos. sry)
Embedded MATLAB -> Plant Model -> MPC--
^ |
|______________________________________|
And th function in the embedded MATLAB is
function EmbeddedMATLAB=Output(t,u)
% t = time and u= output from MPC Controller
if t<3
Output=100;
else Output =u;
end
After designing the MPC Controller, the linearized result for the MPC Controller was 0. So how shlould i go about doing it?

Answers (1)

Erman Korkut
Erman Korkut on 31 May 2011
Hi Tan,
The Embedded MATLAB function blocks are linearized using numerical perturbation by default. Your code seems to indicate that if you linearize your model at a time smaller than 3, the embedded matlab block's output is not a function of input u; instead it is fixed and thus its derivate is zero, thus linearizing to zero.
If you would like to specify a custom linearization for your Embedded MATLAB function block, you can right-click on it and select Linear Analysis->Specify Linearization. Then you can specify the linearization of this block.
Thanks, Erman

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!