这个例子说明了如何使用并行计算来加速Simulink®模型的频响估计。万博1manbetx在某些情况下frestimate
函数通过执行多个Simulink仿真来估计Simulink模型的频率响应。万博1manbetx您可以使用并行计算工具箱™软件将这些模拟分发到MATLAB®工作人员池中。
这个例子需要并行计算工具箱软件。您可以选择使用MATLAB Parallel Server™软件在计算机集群上运行模拟。此示例使用并行计算工具箱软件中可用的本地工作者功能。
frestimate
当你计算一个频率响应使用frestimate
函数,大部分的计算时间都花费在Simulink仿真中。万博1manbetx为了减少总的模拟时间,你可以:
使用快速加速模式。在下列情况下使用此方法frestimate
只执行一个Simulink仿真。万博1manbetx例如,请参见频率域的线性化验证.
在MATLAB池中跨工作人员分布仿真。在下列情况下使用此方法frestimate
执行多个Simulink仿真。万博1manbetxfrestimate
当指定以下参数时,执行多个Simulink仿真万博1manbetx:
的正弦流输入信号SimulationOrder
参数设置为“OneAtATime”
.在这种情况下,对正弦流信号中的每个频率分别进行模拟。
具有多个输入点或非标量输入点的线性分析点。在这种情况下,每个线性化输入点或非标量线性化输入点中的每个通道产生一个单独的Simulink仿真。万博1manbetx
使用frestimate
功能与并行计算也支持正常,加速,和快速加速模式。万博1manbetx
要使用并行计算来加速频率响应估计,在运行之前配置并启动一个MATLAB工作者池frestimate
函数。
要检查MATLAB池是否打开,请使用gcp
函数。如果没有池打开,打开一个使用parpool
函数。
如果parpool isempty (gcp)当地的结束
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。
当您使用正弦流输入信号与frestimate
函数,然后设置SimulationOrder
参数“OneAtATime”
,正弦流信号中的每个频率都在单独的Simulink仿真中进行仿真。万博1manbetx如果启用并行计算选项,则与单个频率对应的模拟将分布在MATLAB池中的工作人员中。
打开模型,获取存储在模型中的线性分析点。
mdl =“scdengine”;Open_system (mdl) IO = getlinio(mdl);
创建一个正弦流输入信号“OneAtATime”
模拟秩序。
在=弗列斯特。Sinestream (“频率”logspace (1, 1, 50),“振幅”1 e - 3,...“SimulationOrder”,“OneAtATime”);
在该模型中,有一个线性化输入点和一个线性化输出点。正弦流信号有50个频率。的frestimate
命令执行50个单独的Simulink仿真,因为万博1manbetxSimulationOrder
参数设置为“OneAtATime”
.
为了在工作人员之间分布这些模拟,允许进行并行计算frestimate
.创建一个frestimateOptions
对象,并设置UseParallel
选项“上”
.的输入参数frestimate
.
选择= frestimateOptions (“UseParallel”,“上”);sys = frestimate (mdl, io,选择);波德(sys,的r *)
通常,并行计算显著加快频率响应估计使用frestimate
.实际的处理时间和改进量取决于您的计算机设置和并行计算工具箱配置。例如,改进的数量可能受到各种因素的影响,包括客户机到工作者的数据传输开销以及工作者进程和OS进程之间的资源竞争。
关闭模式。
bdclose (mdl)
当线性化输入点的数目或线性化输入点中的通道数目大于1时,则frestimate
命令将这些输入通道对应的单独的Simulink仿真分配给MAT万博1manbetxLAB池中的工作人员。
打开模型,获取存储在模型中的线性分析点。
mdl =“scdplane”;Open_system (mdl) io(1) = linio(“scdplane / Sum1”,1,“输入”);io (2) = linio (“scdplane /致动器模型”,1,“输入”);io (3) = linio (“scdplane / Gain5”,1,“输出”);
与linio
函数时,指定两个线性化输入点,它们都位于标量Simulink信号上。万博1manbetx如果你运行frestimate
命令来估计这个模型的频率响应,会发生两个Simulink仿真,每个输入一个。万博1manbetx
将模型线性化,并使用线性化结果创建输入信号。
sys =线性化(mdl, io);在= frest.Sinestream(系统);
在估计频率响应之前,使用。找到线性化输出信号路径中产生时变信号的所有源块findSources
函数。这种时变信号会在线性化输出点对信号产生干扰,产生不准确的估计结果。若要禁用时变源块,请创建frestimateOptions
选项集并指定BlocksToHoldConstant
选择。
srcblks = frest.findSources (“scdplane”io);选择= frestimateOptions (“BlocksToHoldConstant”, srcblks);
使用。启用并行计算UseParallel
估计选项,它在工人之间分配模拟。
opt.UseParallel =“上”;
运行frestimate
使用并行计算。
sys = frestimate (mdl, io,选择);
根据解析线性化绘制估计结果
bodeopts = bodeoptions;bodeopts。PhaseMatching =“上”;bodeplot (sys,系统,的r *, bodeopts);
关闭模型、打开图形和并行池。
bdclose (mdl)关闭(gcf)删除(gcp)
使用“本地”配置文件的并行池正在关闭。
frestimate
|frestimateOptions
|gcp
(并行计算工具箱)|parpool
(并行计算工具箱)