How can I linearize an already compiled model ?

조회 수: 2 (최근 30일)
Julien Prodigue
Julien Prodigue 2018년 3월 27일
답변: Julien Prodigue 2018년 3월 30일
I would like to improve the performance of my script which use linmod to linearize a simulink model in Matlab 2016b. The linmod function is used many times with different state/input vectors so I think compiling the model only once could improve performance.
The structure of my scipt would be :
feval(model,[],[],[],'lincompile');
for i = 1:numel(x)
out = linmod(model,x{i},u{i});
end
feval(model,[],[],[],'term');
But unfortunalty, it only works with the 'v5' linarization algorithm. With the default block by block algorithm, an error is raised when changing model parameters :
Error using dlinmod>local_push_context (line 293)
Cannot change the 'AnalyticLinearization' parameter while the model 'MyModel' is running
Error in dlinmod (line 181)
have = local_push_context(models, want);
Error in linmod (line 59)
[varargout{1:max(1,nargout)}] = dlinmod(model, Ts, varargin{:}, Args);
Is there any way to make linmod work with a compiled model ? Do you have any other idea to improve performance of many linearizations of the same model ?

채택된 답변

Julien Prodigue
Julien Prodigue 2018년 3월 30일
I have found a solution for this.
dlinmod sets some models parameters before computing the linearization and those parameters cannot be changed while the model is compiled : you juste have to set those parameters before compiling. Thus, the set_param wont raise an error if the parameter to set is already set to the same value.
set_param(model,'AnalyticLinearization','on');
set_param(model,'BufferReuse','off');
set_param(model,'SimulationMode','normal');
set_param(model,'RTWInlineParameters','on');
set_param(model,'InitInArrayFormatMsg','None');
feval(model,[],[],[],'lincompile');
for i = 1:numel(x)
out = linmod(model,x{i},u{i});
end
feval(model,[],[],[],'term');

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Trimming and Linearization에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by