В этом примере показано, как ускорить оценку частотной характеристики моделей Simulink ® с помощью параллельных вычислений. В некоторых сценариях frestimate функция оценивает частотную характеристику модели Simulink, выполняя несколько симуляций Simulink. Эти симуляции можно распространить среди сотрудников MATLAB ® с помощью программного обеспечения Parallel Computing Toolbox™.
В этом примере требуется программное обеспечение Parallel Computing Toolbox. При необходимости можно выполнить моделирование в кластере компьютеров с помощью программного обеспечения MATLAB Parallel Server™. В этом примере используются функции локального работника, доступные в программном обеспечении Parallel Computing Toolbox.
frestimateПри вычислении частотной характеристики с помощью frestimate большая часть вычислительного времени используется при моделировании Simulink. Чтобы сократить общее время моделирования, можно:
Используйте режим быстрого ускорения. Использовать этот метод при frestimate выполняет только одно моделирование Simulink. Пример см. в разделе Проверка линеаризации в частотной области с помощью команды FRESTIMATE.
Распределение моделирования между работниками в пуле MATLAB. Использовать этот метод при frestimate выполняет несколько симуляций Simulink. frestimate выполняет несколько симуляций Simulink при указании следующего:
Входной сигнал синестрима с SimulationOrder параметр имеет значение 'OneAtATime'. В этом случае каждая частота синестрименного сигнала моделируется отдельно.
Точки линейного анализа с более чем одной входной точкой или нескалярной входной точкой. В этом случае каждая входная точка линеаризации или каждый канал в нескалярной входной точке линеаризации дает отдельное моделирование Simulink.
Использование frestimate функция с параллельными вычислениями также поддерживает нормальные, ускорительные и быстрые ускорительные режимы.
Чтобы использовать параллельные вычисления для ускорения оценки частотного отклика, настройте и запустите пул работников MATLAB перед запуском frestimate функция.
Чтобы проверить, открыт ли пул MATLAB, используйте gcp функция. Если пул не открыт, откройте его с помощью parpool функция.
if isempty(gcp) parpool local end
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
При использовании синестрименного входного сигнала с frestimate и вы устанавливаете SimulationOrder параметр для 'OneAtATime'каждая частота в синестрименном сигнале моделируется в отдельном симуляторе Simulink. Если включена опция параллельных вычислений, моделирование, соответствующее отдельным частотам, распределяется между работниками в пуле MATLAB.
Откройте модель и получите точки линейного анализа, сохраненные в модели.
mdl = 'scdengine';
open_system(mdl)
io = getlinio(mdl);

Создание синестрименного входного сигнала с помощью 'OneAtATime' порядок моделирования.
in = frest.Sinestream('Frequency',logspace(-1,1,50),'Amplitude',1e-3,... 'SimulationOrder','OneAtATime');
В этой модели имеется одна входная точка линеаризации и одна выходная точка линеаризации. В синестрименном сигнале имеются 50 частоты. frestimate команда выполняет 50 отдельных симуляций Simulink, поскольку SimulationOrder параметр имеет значение 'OneAtATime'.
Чтобы распределить эти симуляции между работниками, включите параллельные вычисления для frestimate. Создание frestimateOptions и установите UseParallel опция для 'on'. Использовать этот объект в качестве входного аргумента для frestimate.
opt = frestimateOptions('UseParallel','on'); sysest = frestimate(mdl,io,in,opt); bode(sysest,'r*')

В целом, параллельные вычисления значительно ускоряют оценку частотного отклика с использованием frestimate. Фактическое время обработки и степень улучшения зависят от настройки компьютера и конфигурации панели инструментов для параллельных вычислений. Например, на степень улучшения могут влиять различные факторы, включая накладные расходы от передачи данных между клиентами и работниками и конкуренцию ресурсов между рабочими процессами и процессами OS.
Закройте модель.
bdclose(mdl)
Когда число входных точек линеаризации или число каналов в входной точке линеаризации больше единицы, frestimate команда распределяет отдельные симуляции Simulink, соответствующие этим входным каналам, среди работников в пуле MATLAB.
Откройте модель и получите точки линейного анализа, сохраненные в модели.
mdl = 'scdplane'; open_system(mdl) io(1) = linio('scdplane/Sum1',1,'input'); io(2) = linio('scdplane/Actuator Model',1,'input'); io(3) = linio('scdplane/Gain5',1,'output');

С помощью linio функция задает две входные точки линеаризации, которые расположены на скалярных сигналах Simulink. Если запустить frestimate команда для оценки частотной характеристики для этой модели, происходит два моделирования Simulink, по одному для каждого входа.
Линеаризация модели и создание входного сигнала с использованием результата линеаризации.
sys = linearize(mdl,io); in = frest.Sinestream(sys);
Перед оценкой частотной характеристики найдите все исходные блоки в сигнальных трактах выходов линеаризации, которые генерируют изменяющиеся во времени сигналы, используя findSources функция. Такие изменяющиеся во времени сигналы могут создавать помехи сигналу в выходных точках линеаризации и давать неточные результаты оценки. Чтобы отключить изменяющиеся во времени исходные блоки, создайте frestimateOptions набор опций и укажите BlocksToHoldConstant вариант.
srcblks = frest.findSources('scdplane',io); opt = frestimateOptions('BlocksToHoldConstant',srcblks);
Разрешить параллельные вычисления с помощью UseParallel вариант оценки, который распределяет моделирование между работниками.
opt.UseParallel = 'on';
Управляемый frestimate использование параллельных вычислений.
sysest = frestimate(mdl,io,in,opt);
Постройте график результата оценки относительно аналитической линеаризации
bodeopts = bodeoptions; bodeopts.PhaseMatching = 'on'; bodeplot(sys,sysest,'r*',bodeopts);

Закройте модель, открытую фигуру и параллельный пул.
bdclose(mdl) close(gcf) delete(gcp)
Parallel pool using the 'local' profile is shutting down.
frestimate | frestimateOptions | gcp (Панель инструментов параллельных вычислений) | parpool(Панель инструментов параллельных вычислений)