本指南将帮助您加快仿真速度,提高 Simulink® 模型的性能。以下步骤向您介绍了一些可用于修复模型或分析模型性能的工具。如果您在执行这些步骤时遇到任何问题或无法解决问题,请联系技术支持。这些步骤要求您在执行过程中收集数据。如果您需要更多的帮助,这些数据有助于技术支持更快地了解您的问题。
步骤 1:考虑最近发生的变化
模型的更改或 MATLAB 版本的更换是否导致了性能问题?
模型比较
如果您在升级到新的 MATLAB® 版本的过程中修改了模型,请将模型与其原始版本进行比较,以查找可能会对性能产生负面影响的更改。
完成比较后,点击发布并保存报告。
升级顾问
如果您升级到了新版本,并且使用比较工具未发现问题,请运行升级顾问。升级顾问可以确定通过更改模型以使用 Simulink 中的新功能和设置来获益的情形。
在升级顾问完成运行检查后,保存报告。
步骤 2:运行性能顾问
性能顾问会分析模型中可能会降低仿真速度的配置设置和建模模式,并提出改进性能的建议措施。在对模型进行修改后,性能顾问可以执行最后的验证以显示所做的改进。
在性能顾问完成最终验证后,保存报告。
如果您要尝试其他方法来提高性能,请继续执行步骤 3。
步骤 3:初始化探查
您最近一次仿真是否有带有结果的 SimulationOutput
对象?
使用此命令检查初始化模型所需的时间。如有必要,将 out
替换为您的 SimulationOutput
对象的名称。
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
如果初始化时间比您预期的长,并且您要进一步调查,请继续步骤 3 中的下一部分。如果您更想关注潜在的仿真问题,请继续执行步骤 4。
使用此命令检查初始化模型所需的时间。如有必要,将 out
替换为您的 SimulationOutput
对象的名称。
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
如有必要,将 out
替换为您的 SimulationOutput
对象的名称。
如果初始化时间比您预期的长,并且您要进一步调查,请继续步骤 3 中的下一部分。如果您更想关注潜在的仿真问题,请继续执行步骤 4。
大多数情况下,运行 Simulink 仿真时会创建一个包含仿真信息的对象。
要为您的模型生成 SimulationOutput
对象,请用您的模型名称替换 MyModel
并运行以下命令。
mdl = "MyModel";
out = sim(mdl,StopTime=“0”,CaptureErrors=“on”);
这些命令会初始化模型并在时间 0 处停止仿真。仿真生成的 SimulationOutput
对象将包含有关初始化时间的信息。
有了 out
后,请使用以下命令检查初始化模型所需的时间:
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
如果初始化时间比您预期的长,并且您要进一步调查,请继续步骤 3 中的下一部分。如果您更想关注潜在的仿真问题,请继续执行步骤 4。
大多数情况下,运行 Simulink 仿真时会创建一个包含仿真信息的对象。在尝试获取新对象之前,请检查您的基础工作区中是否有值为 1x1 SimulationOutput
的现有对象。
要为您的模型生成 SimulationOutput
对象,请用您的模型名称替换 MyModel
并运行以下命令。
mdl = "MyModel";
out = sim(mdl,StopTime=“0”,CaptureErrors=“on”);
这些命令会初始化模型并在时间 0 处停止仿真。仿真生成的 SimulationOutput
对象将包含有关初始化时间的信息。
有了 out
后,请使用以下命令检查初始化模型所需的时间:
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
如果初始化时间比您预期的长,并且您要进一步调查,请继续步骤 3 中的下一部分。如果您更想关注潜在的仿真问题,请继续执行步骤 4。
使用 MATLAB 探查器查找可能会减慢初始化速度的代码。
MATLAB 探查器
有时,有些模型回调或初始化脚本有很大的 MATLAB 代码库。MATLAB 探查器会分析执行与您的模型相关联的 MATLAB 代码所需的时间,以帮助您识别潜在瓶颈。
在运行仿真之前,在命令行窗口中运行以下命令:
profile clear; profile on;
在仿真完成后,运行以下命令:
p = profile('info');
在 MATLAB 探查器运行后,点击打印并将报告另存为 PDF 格式。
查看探查器的结果。如果存在您没有预料到的函数或脚本,或某些 MATLAB 代码的执行时间比您预计的要长,请花些时间尝试修复它。
如果您要尝试其他方法来提高性能,请继续执行步骤 4。
步骤 4:仿真探查
您是否使用了变步长求解器?
Simulink 探查器
Simulink 探查器会分析执行模型仿真所需的时间,并按组件细分该时间。您可以使用这些信息来设置基线,并识别模型中可能有问题的构造。记下花费大量自用时间的模型。
在完成探查后,在共享下,点击生成报告并保存报告。
如果上述步骤仍未能完全解决模型问题,请继续执行步骤 5。
Simulink 探查器
运行 Simulink 探查器。
Simulink 探查器会分析执行模型仿真所需的时间,并按组件细分该时间。您可以使用这些信息来设置基线,并识别模型中可能有问题的构造。记下花费大量自用时间的模型。
在完成探查后,在共享下,点击生成报告并保存报告。
求解器探查工具
运行求解器探查工具。
求解器探查工具会分析模型的动态特性,可以帮助您确定由于较小的时间步或重大仿真事件(包括求解器异常和求解器重置)而导致的仿真性能下降。
在探查完成后,点击导出选项卡以保存图,然后另存为 .fig 文件。
如果上述步骤仍未能完全解决模型问题,请继续执行步骤 5。
步骤 5:进一步的步骤
您对模型性能是否满意?
感谢您使用 Simulink 性能指南!
查看以下额外资源。这些资源可用于探索提高性能的方法,使您的模型像一台润滑良好的机器一样运行:
感谢您花时间调试和收集诊断信息。
请联系支持部门,并提供在此过程中生成的报告。