Simulink ® Accelerator™ ускоряет выполнение вашей модели, создавая и компилируя код С Этот код С занимает место интерпретационного кода, который Simulink использует в режиме normal mode (то есть, когда Simulink ® не находится в режиме Accelerator). Simulink Accelerator генерирует код C из модели Simulink и вызывает функцию MATLAB ® mex, чтобы скомпилировать и динамически связать сгенерированный код с Simulink. Этот процесс генерации и компиляции кода происходит в первый раз, когда вы ускоряете модель и в любой момент, когда изменения модели являются достаточно значительными, чтобы потребовать повторной генерации (для примера, сложения блока).
Следующий пример использует модель slAccelDemoF14, чтобы проиллюстрировать использование Simulink Accelerator.
Откройте модель slAccelDemoF14 и установите время остановки равным 3000 секунд. Симулируйте модель и время, сколько времени это занимает, используя TIC/TOC.
modelName = 'slAccelDemoF14'; open_system(modelName) set_param(modelName,'stoptime','3000') tic sim(modelName); toc
Elapsed time is 10.224818 seconds.
Чтобы активировать Simulink ® Accelerator, в редакторе Simulink, на вкладке Simulation, в разделе Simulate, выберите 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')