主要内容

利用并行计算加速频响估计

这个例子说明了如何使用并行计算加速Simulink®模型的频响估计。金宝app在某些情况下,frestimate函数通过执行多个Simulink仿真来估计Simulink模型的频率响应。金宝app您可以通过使用并行计算工具箱™软件将这些模拟分布到MATLAB®工作者池。

这个例子需要并行计算工具箱软件。您可以选择使用MATLAB Parallel Server™软件在计算机集群上运行模拟。本例使用并行计算工具箱软件中提供的本地工作器功能。

加速执行的Simu金宝applink仿真frestimate

当你计算频率响应时使用frestimate函数,大部分的计算时间都花在Simulink仿真中。金宝app为了减少总模拟时间,您可以:

  1. 使用快速加速模式。使用此方法时frestimate只执行一个Simulink仿真。金宝app有关示例,请参见在命令行中验证频域的线性化

  2. 在MATLAB池中跨工作人员分发模拟。使用此方法时frestimate执行多个Simulink仿真。金宝appfrestimate执行多个Simulink仿真时,您指定以下:金宝app

  • 的正弦输入信号SimulationOrder参数设置为“OneAtATime”.在这种情况下,分别模拟了正弦信号中的每个频率。

  • 具有多个输入点或非标量输入点的线性分析点。在这种情况下,每个线性化输入点或非标量线性化输入点中的每个通道都会产生单独的Simulink仿真。金宝app

使用frestimate具有并行计算功能的函数还支持正常、加速和快速加速模式。金宝app

配置MATLAB池

若要使用并行计算来加速频响估计,请在运行frestimate函数。

要检查MATLAB池是否已打开,请使用gcp函数。如果没有打开的存储池,请使用parpool函数。

如果parpool isempty (gcp)当地的结束

在Sinestream金宝app输入中为每个频率分发Simulink仿真

当您使用正弦输入信号与frestimate函数,你设置SimulationOrder参数“OneAtATime”,在一个单独的Simulink仿真中模拟正弦信号中的每个频率。金宝app如果启用并行计算选项,对应于个别频率的模拟将分布在MATLAB池中的工作人员之间。

打开模型,得到模型中存储的线性分析点。

mdl =“scdengine”;Open_system (mdl) IO = getlinio(mdl);

创建一个实流输入信号“OneAtATime”模拟秩序。

In =最先。Sinestream (“频率”logspace (1, 1, 50),“振幅”1 e - 3,...“SimulationOrder”“OneAtATime”);

在该模型中,有一个线性化输入点和一个线性化输出点。在正流信号中有50个频率。的frestimate命令执行50个单独的Simulink模拟,因为金宝appSimulationOrder参数设置为“OneAtATime”

为了在工作人员之间分发这些模拟,为frestimate.创建一个frestimateOptions对象,并设置UseParallel选项“上”.使用此对象作为的输入参数frestimate

opt = frestimateOptions(“UseParallel”“上”);(mdl,io,in,opt);波德(sys,的r *

在一般情况下,并行计算显著加快频响估计使用frestimate.实际处理时间和改进量取决于计算机设置和并行计算工具箱配置。例如,改进的数量可能受到各种因素的影响,包括从客户端到工作进程的数据传输的开销以及工作进程和OS进程之间的资源竞争。

关闭模型。

bdclose (mdl)

为输入通道分发Simu金宝applink仿真

当线性化输入点的数目或线性化输入点中的通道数目大于1时,则frestimate命令将与这些输入通道相对应的单个Simulink仿真分布到MA金宝appTLAB池中的工作者中。

打开模型,得到模型中存储的线性分析点。

mdl =“scdplane”;Open_system (mdl) io(1) = linio(“scdplane / Sum1”, 1“输入”);Io (2) = linio(“scdplane /致动器模型”, 1“输入”);Io (3) = linio(“scdplane / Gain5”, 1“输出”);

linio函数中,指定两个线性化输入点,它们都位于标量Simulink信号上。金宝app如果你运行frestimate命令来估计该模型的频率响应时,会进行两次Simulink仿真,每个输入一次。金宝app

线性化模型,并使用线性化结果创建输入信号。

Sys =线性化(mdl,io);in = frst . sinestream (sys);

在估计频率响应之前,找到线性化输出的信号路径中的所有源块findSources函数。这种时变信号会在线性化输出点干扰信号并产生不准确的估计结果。若要禁用时变源块,请创建frestimateOptions选项集,并指定BlocksToHoldConstant选择。

srcblks = frst . findsources (“scdplane”io);opt = frestimateOptions(“BlocksToHoldConstant”, srcblks);

方法启用并行计算UseParallel估计选项,它在工作人员之间分发模拟。

opt.UseParallel =“上”

运行frestimate使用并行计算。

(mdl,io,in,opt);

将估计结果与分析线性化进行对比

Bodeopts = bodeoptions;bodeopts。PhaseMatching =“上”;bodeplot (sys,系统,的r *, bodeopts);

关闭模型、打开的图形和并行池。

关闭(mdl)关闭(gcf)删除(gcp)

另请参阅

||(并行计算工具箱)|(并行计算工具箱)

相关的话题