如何加快Simulink模型的仿真速度

 我来答
爱问hill
2016-01-27 · 知道合伙人软件行家
爱问hill
知道合伙人软件行家
采纳数:2186 获赞数:15507
毕业于苏州大学人力资源管理专业,本科学位。2年IT行业从业经验,致力于互联网中开启自己人生的一番天地。

向TA提问 私信TA
展开全部
  有几种原因可能导致仿真运行速度很慢:

  1. 模型中有一个 MATLAB 函数块 :当存在 MATLAB Fcn 模块时,在每个采样时间都会调用 MATLAB
解释器。这会大大降低仿真速度。所以,应尽可能使用内置Simulink模块。

  2. MATLAB S函数(S-Function):在每个时间步长都会计算
S-Function。把MATLAB代码转为MEX文件,这样性能可以得到显著提高。此外,如果可能,应尽量使用内置模块建模。

  3.
较小的步长或采样时间(或者彼此间不是倍数关系的采样时间):为了在仿真期间捕获重要事件,有时必须设置最够小的步长;反过来,步长太小会导致产生不必要的输出点,从而减慢仿真速度。

  4. 最大步长太小:如果您更改了最大步长,请尝试用默认值(设置为自动)来运行仿真。

  5. 您要求的精度可能过高:默认相对容差(0.1%
精度)通常就足够了。对于状态趋于零的模型,如果绝对容差参数太小,则仿真可能在近零状态值附近采用过多步长请记住,所有要输入的容差值都是绝对值。所以,默认相对容差值设置为 1e-3 时,意味着相对容差是 0.001,或者
0.1%(采用百分比形式)。

  6. 时间尺度可能太长:减少时间间隔。

  7. 您的模型中包含一个 Memory 模块:使用 Memory 模块会导致在每个步长上变阶求解器(ode15s 和 ode113)被重置回阶数
1。

  8. Extras 库中有包含以上三项之一(即Graph Scope、Autoscaling Scopes、Spectrum
analyzer等)的Mask模块:Unmask模块来看看它们是否调用 S-Function。

  9. 使用了Scope模块:尽管它们的影响很可能不明显。

  10. 代数环:为了解代数环,会在每个步长上都执行迭代计算。因此,它大大降低了速度。

  11. 不要在积分函数中引入白噪声模块:对于连续系统,使用 Extras/Sources 库中的带限白噪声模块。

  12. 这可能是个刚性(stiff)问题,而您使用的是非刚性(non-stiff)求解器:尝试使用 ode15s。

  13.
您可能碰到了连续过零,导致仿真逐渐“停滞”,时间很长(并且可能是无限长时间):要解决此问题,可以禁用过零检测。这可以通过在“Simulation
参数”(Simulation Parameters) 对话框的“高级”(Advanced) 窗格中选择“禁用过零检测”(Disable zero
crossing detection) 选项来实现。在 R11 中,可通过转到模型的“仿真”(Simulation) ->“参数”(Parameters)
->“诊断”(Diagnostics) 部分来实现此目的。

  

  14. 您也可能想要尝试设置“模型参数配置”(Model Parameter Configuration) 对话框以便您的 Simulink
模型使用“内联参数”(Inline Parameters) 选项:选择此选项可使 Simulink 能够将指定参数视为常量,从而加快仿真速度。

  15. Simulink Accelerator 仿真模式可以加快仿真时间。Profiler可以分析模型性能瓶颈来提高仿真速度。

  16. 如果模型非常复杂(涉及大量模型引用和子系统)且包含大量数据记录,仿真速度也会受到影响:禁用数据记录功能也能提高仿真速度。

  除此之外,仿真速度受系统(即处理器、RAM、正在发生的交换量等)的制约。

  关于仿真速度有还有几点需要考虑:

  - 图形引擎速度

  - CPU 速度

  - 内存量

  为此,下面是几点提示:

  - 如果在仿真过程中有打开的scope或其他可视化输出设备,这些都会降低性能

  - 性能与 CPU 速度成正比

  - 如果在仿真过程中存储的变量大于系统上的 RAM 量,则性能会很差。解决办法是运行较小的仿真或增加内存
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式