Simulink® Accelerator™ ускоряет выполнение вашей модели путем создания и компиляции кода С. Этот код С занимает место интерпретирующего кода, который использует Simulink, когда в Режиме normal mode (то есть, когда Simulink® не находится в Режиме Accelerator). Акселератор Simulink генерирует код С из модели Simulink и вызывает MEX-функцию MATLAB®, чтобы скомпилировать и динамически соединить сгенерированный код с Simulink. Эта генерация кода и процесс компиляции происходят в первый раз, когда вы ускоряете модель и любое время, изменения модели являются достаточно значительными, чтобы потребовать регенерации (например, сложение блока).
Следующий пример использует slAccelDemoF14 модель, чтобы проиллюстрировать использование Акселератора Simulink.
Откройте slAccelDemoF14 модель и установите время остановки на 3 000 секунд. Симулируйте модель и измерьте, сколько времени, она берет использованию TIC/TOC.
modelName = 'slAccelDemoF14'; open_system(modelName) set_param(modelName,'stoptime','3000') tic sim(modelName); toc
Elapsed time is 10.224818 seconds.
Чтобы активировать Акселератор Simulink®, в Редакторе Simulink, на вкладке Simulation, под Симулируют, выбирают Accelerator
. Можно также выпустить set_param
команда в командной строке MATLAB®.
set_param(modelName,'SimulationMode','Accelerator')
Начиная с выполнения в ускоренном режиме создает некоторые файлы, первый шаг к временной области.
originalDir = pwd; tempDir = tempname; mkdir(tempDir) cd(tempDir)
Создайте ускоренную модель и симулируйте ее. При выполнении в Режиме Accelerator можно запустить, модель путем выбора работает на вкладке Simulation или путем выполнения команды:
sim(modelName)
в подсказке MATLAB. В любом случае прогресс процесса генерации кода будет отображен в окне команды MATLAB. Чтобы подавить это отображение переносят sim команду в evalc.
evalc('sim(modelName);');
Симулируйте модель снова. Заметьте, что симуляция модели запускается намного быстрее на последующих запусках.
tic sim(modelName); toc
Elapsed time is 2.968566 seconds.
Измените значение одного из настраиваемых параметров в модели и симулируйте модель снова. Заметьте, что ускоренная версия модели не должна быть регенерирована и таким образом, симуляция все еще запускается более быстро в режиме Accelerated, чем в Режиме normal mode.
modelWorkspace = get_param(modelName,'ModelWorkspace'); evalin(modelWorkspace,'Mw=Mw*2;') tic sim(modelName); toc
Elapsed time is 2.853928 seconds.
Закройте модель и удалите сгенерированные файлы.
bdclose(modelName) clear([modelName,'_acc']) cd(originalDir) rmdir(tempDir,'s')