Linear Analysis in a Loop with Fast RestartIn this example, you will trim and linearize a closed loop engine speed control model with
fastRestartForLinearAnalysis.Open the engine speed control model and get the analysis points for linearization. This is
done to prevent re-compilation between the first call to findop and linearize.model = 'scdspeedctrl';
open_system(model);
io = getlinio(model);
fopt = findopOptions('DisplayReport','off');Configure the PI controller to use the base workspace variables kp and ki.block = [model,'/PID Controller'];
set_param(block,'P','kp');
set_param(block,'I','ki');Create a grid of parameters to vary.vp = 0.0005:0.0005:0.003;
vi = 0.0025:0.0005:0.005;
[KP,KI] = ndgrid(vp,vi);
N = numel(KP);
sz = size(KP);Initialize the base workspace variables kp and ki.kp = KP(1);
ki = KI(1);Turn fastRestartForLinearAnalysis on and use io as 'AnalysisPoints'.fastRestartForLinearAnalysis(model,'on','AnalysisPoints',io);Perform the linear analysis in a loop. Make sure the block initialization is called after the
parameters are updated when the model is in a compiled state.ops = operspec(model); % operating point specifications
for i = N:-1:1
kp = KP(i);
ki = KI(i);
Simulink.Block.eval(block); % evaluate the block
op = findop(model,ops,fopt); % trim the model15 Alphabetical List