我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:正版王中王 > 仿真 >

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

归档日期:07-20       文本归类:仿真      文章编辑:爱尚语录

  有几种原因可能导致仿线. 模型中有一个 MATLAB 函数块 :当存在 MATLAB Fcn 模块时,在每个采样时间都会调用 MATLAB 解释器。这会大大降低仿真速度。所以,应尽可能使用内置Simulink模块。2. MATLAB S函数(S-Function):在每个时间步长都会计算 S-Function。把MATLAB代码转为MEX文件,这样性能可以得到显著提高。此外,如果可能,应尽量使用内置模块建模。

  3. 较小的步长或采样时间(或者彼此间不是倍数关系的采样时间):为了在仿真期间捕获重要事件,有时必须设置最够小的步长;反过来,步长太小会导致产生不必要的输出点,从而减慢仿线. 最大步长太小:如果您更改了最大步长,请尝试用默认值(设置为自动)来运行仿线. 您要求的精度可能过高:默认相对容差(0.1% 精度)通常就足够了。对于状态趋于零的模型,如果绝对容差参数太小,则仿真可能在近零状态值附近采用过多步长。有关容错度的详细信息,请参阅《使用 Simulink 手册》第 5-13 页。请记住,所有要输入的容差值都是绝对值。所以,默认相对容差值设置为 1e-3 时,意味着相对容差是 0.001,或者 0.1%(采用百分比形式)。

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

  10. 代数环:为了解代数环,会在每个步长上都执行迭代计算。因此,它大大降低了速度。有关代数环的详细信息,请参阅《使用 Simulink 手册》第 3-18 页。

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

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

  有关过零检测的详细信息,请参阅《使用 Simulink 手册》第 5-44 页。

  15. Simulink Accelerator 仿真模式可以加快仿真时间。Profiler可以分析模型性能瓶颈来提高仿线. 如果模型非常复杂(涉及大量模型引用和子系统)且包含大量数据记录,仿真速度也会受到影响:禁用数据记录功能也能提高仿真速度。

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

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

  - 如果在仿真过程中存储的变量大于系统上的 RAM 量,则性能会很差。解决办法是运行较小的仿真或增加内存

本文链接:http://merlejacobs.com/fangzhen/771.html