主要内容

改进性能的建模技术

加速初始化阶段

使用这些技术,通过加速初始化阶段来加速模拟。

使用蒙版编辑器简化图形

复杂的图形和大型图像需要很长时间来加载和渲染。包含此类图像的屏蔽块会使您的模型反应较差。在可能的情况下,从屏蔽块中删除复杂的图纸和图像。

如果您想保留该图像,请将其替换为较小的低分辨率版本。使用蒙版编辑器并编辑图标绘制命令,以保持调用所加载的图像图像()

有关蒙版编辑器的详细信息,请参见掩码编辑器概述

合并函数调用

当您打开或更新一个模型时,Simulink金宝app®运行掩码初始化代码。如果您的模型包含复杂的掩码初始化命令,其中包含对set_param,将连续的调用合并为具有多个参数对的单个调用。合并调用可以减少与这些函数调用相关的开销。

要了解更多信息,请参见掩码回调码

使用mat文件加载数据

如果你用MATLAB®脚本加载和初始化数据,您可以通过加载mat文件来提高性能。mat文件中的数据是二进制的,可能比脚本更难处理。然而,加载操作通常比等效的MATLAB脚本更快地初始化数据。

有关更多信息,请参见信号数据mat文件

减少模型的交互性

一般来说,模型的交互性越强,模拟所需的时间就越长。使用这些技术来减少模型的交互性。

关闭调试诊断

某些已启用的诊断特性会大大降低模拟速度。考虑在模型配置参数中禁用它们诊断窗格。

请注意

运行超出数组边界而且求解器数据不一致会降低模型运行时性能。有关更多信息,请参见超出数组边界而且求解器数据不一致

禁用MATLAB调试

在验证MATLAB代码正确工作后,在模型配置参数中禁用这些检查模拟目标窗格。

  • 启用调试/动画

  • 在溢出时检测换行(带有调试)

  • 回声不带分号的表达式

有关更多信息,请参见模型配置参数:仿真目标

使用BLAS库支持金宝app

如果您的仿真涉及低级的MATLAB矩阵操作,请使用基本线性代数子程序(BLAS)库来使用高度优化的外部线性代数例程。

禁用Stateflow动画

默认情况下,为Stateflow®图表突出显示模型中的当前活动状态,并使模型模拟时发生的状态转换动画化。这个特性对于调试很有用,但是会减慢模拟的速度。

若要加速模拟,请关闭所有状态流程图或禁用动画。类似地,考虑禁用动画或降低场景保真度,当你使用:

  • 金宝appSimulink 3D动画

  • Simscape™多体™可视化

  • FlightGear

  • 任何其他3D动画包

要了解更多信息,请参见加速模拟(Stateflow)

调整范围查看器属性

如果您的模型包含一个显示高记录率的作用域查看器,而您无法删除该作用域,请调整查看器属性,以在保真度和呈现速度之间进行权衡。

但是,当您使用抽取来减少绘制的数据点数量时,您可能会错过短暂的瞬变现象和使用更多数据点可以看到的其他现象。要对启用可视化进行更精确的控制,请将查看器放置在启用的子系统中。

有关更多信息,请参见观众范围

降低模型复杂度

使用这些技术可以通过简化模型而不牺牲保真度来提高模拟性能。

用低保真度替代子系统

用下列选项之一替换复杂的子系统:

  • 使用系统识别工具箱™从测量的输入输出数据创建的线性或非线性动态模型。

  • 使用基于模型的校准工具箱™创建的高保真的非线性统计模型。

  • 线性模型是用金宝appSimulink控制设计™

  • 查找表。有关更多信息,请参见查找表

您可以在一个库中维护子系统的两种表示,并使用不同的子系统来管理它们。根据模型的不同,您可以在不影响整体结果的情况下进行这种替换。有关更多信息,请参见优化生成的查找表块代码

减少方块数量

当您减少模型中的块数量时,在模拟过程中需要更新的块就会更少,模拟也会更快。

  • 向量化是减少块数的一种方法。例如,如果你有几个并行信号,它们经历了一组相似的计算,尝试使用a将它们组合成一个向量Mux块并执行单个计算。

  • 还可以启用块减少参数中的配置参数对话框。

使用基于框架的处理

在基于帧的处理中,Simulink批量处理样本,而不是金宝app一次处理一个。例如,如果模型包含模数转换器,则可以在缓冲区中收集输出示例。在单个操作中处理缓冲区,例如快速傅里叶变换。以这种方式处理数据块可以减少模拟需要在模型中调用块的次数。

一般来说,调度开销随着帧大小的增加而减少。然而,较大的帧会消耗更多的内存,内存限制会对复杂模型的性能产生不利影响。尝试不同的帧大小,以找到一个最大限度地提高基于帧的处理的性能收益而不引起内存问题的帧大小。

选择并配置一个求解器

金宝appSimulink提供了一个全面的求解器库,包括固定步长求解器和变步长求解器,用于处理刚性和非刚性系统。每个求解器决定下一个模拟步骤的时间。求解器应用数值方法求解表示模型的常微分方程。

所选的求解器和所选的求解器选项会影响模拟速度。选择并配置一个求解器,使用这些标准帮助提高模型的性能。有关更多信息,请参见选择一个求解器

系统刚度

刚性系统具有缓慢和快速变化的连续动态。隐式求解器对于复杂的问题特别有用。显式求解器更适合于非刚性系统。使用显式求解器求解刚性系统可能会导致不正确的结果。如果一个非刚性求解器使用非常小的步长来求解一个模型,这表明你的系统是刚性的。

模型步长和动态

当您决定使用可变步长或固定步长求解器时,请记住模型的步长和动态。选择一个求解器,它使用时间步长来仅捕获对您重要的动态。选择一个求解器,它只执行下一个时间步骤所需的计算。

当步长小于或等于模型的基本采样时间时,使用固定步长求解器。对于变步长求解器,步长可以变化,因为变步长求解器动态地调整步长。因此,某些时间步长的步长大于基本采样时间,从而减少了完成模拟所需的步数。一般来说,使用可变步长求解器的模拟比使用固定步长求解器的模拟运行得更快。

当模型的基本采样时间等于其中一个采样率时,选择固定步长求解器。当模型的基本采样时间小于最快采样率时,选择变步长求解器。您还可以使用可变步长求解器来捕获连续动态。

减少求解顺序

当减少求解器顺序时,将减少Simulink为确定状态输出而执行的计算次数,从而提高仿真速度。金宝app然而,随着求解器阶数的降低,结果变得不那么准确。选择产生可接受的精度结果的最低求解器阶数。

增加解算器步长或容错

增加解算器步长或误差容忍度通常以牺牲精度为代价来提高模拟速度。请谨慎进行这些更改,因为它们可能会导致Simulink在模拟过程中错过潜在的重要动态。金宝app

禁用过零检测

变步长求解器动态调整步长,当变量变化缓慢时增加步长,当变量变化迅速时减小步长。这种行为导致求解器在不连续附近采取许多小步骤,因为这是变量快速变化的时候。精度提高了,但通常以长时间的模拟为代价。

为了避免与这些情况相关的小时间步长模拟,Simulink使用过零检测来准确定位这种不连续。金宝app对于在运行模式之间表现出频繁波动的系统(一种称为抖振的现象),这种过零检测可能会产生相反的效果,从而降低模拟速度。在这些情况下,您可以禁用过零检测以提高性能。

您可以为模型中的特定块启用或禁用过零检测。为了提高性能,可以考虑对不影响模拟精度的块禁用过零检测。

有关更多信息,请参见讨论二阶导数过零检测

保存模拟状态

在经典的工作流程中,Simulink模型对不同的输入、金宝app边界条件和操作条件进行重复模拟。在许多情况下,这些模拟共享一个共同的启动阶段,即模型从初始状态转换到另一种状态。例如,在测试各种控制序列之前,您可以使电动机加速。

使用SimState,您可以在启动阶段结束时保存模拟状态,然后将其恢复为未来模拟的初始状态。这种技术不会提高模拟速度,但它可以减少连续运行的总模拟时间,因为启动阶段只需要模拟一次。

看到保存和恢复模拟工作点获取更多信息。

相关的例子

更多关于