sldiagnostics
显示有关 Simulink 系统的诊断信息
语法
sldiagnostics('
sys
')
[txtRpt, sRpt] = sldiagnostics('sys')
[txtRpt, sRpt] = sldiagnostics('sys', options
)
[txtRpt, sRpt] = sldiagnostics('sys', 'CompileStats')
[txtRpt, sRpt] = sldiagnostics('sys', 'RTWBuildStats')
说明
sldiagnostics('
显示与 sys
')sys
指定的模型或子系统相关联的以下诊断信息:
每种类型的模块的数量
每种类型的 Stateflow® 对象的数量
根模型的状态、输出、输入和采样时间的数量
引用的库的名称以及引用模块的实例的名称
用于根模型每个编译阶段的时间和额外内存
如果未加载 sys
指定的模型,则 sldiagnostics
在执行分析前会加载该模型。
命令 sldiagnostics('
只显示与列出为 sys
', options
)options
字符向量的特定操作相关联的诊断信息。下表汇总了可用选项及其对应的有效输入和输出。
使用 sldiagnostics
,您可以输入模型的名称或子系统的路径。对于某些分析选项,sldiagnostics
只能分析一个根模型。如果为其中一个分析提供了不兼容的输入,则 sldiagnostics
会发出警告。最后,如果您输入 Simulink® 库,则 sldiagnostics
无法执行需要模型编译 (更新图) 的选项。相反,sldiagnostics
会发出警告。
在分析期间,sldiagnostics
会跟随库链接,但不会跟随或分析模型引用。有关在指定模型中查找所有 Model 模块和引用模型的详细信息,请参阅 find_mdlrefs
。
选项 | 有效输入 | 输出 |
---|---|---|
| 根模型、库或子系统 | 列出系统中的所有唯一模块以及每个模块出现的次数。这包括嵌套在封装子系统或隐藏模块中的模块。 |
| 根模型、库或子系统 | 列出系统中的所有唯一 Stateflow 对象以及每个对象出现的次数。 |
| 根模型 | 列出根模型中使用的状态、输出、输入和采样时间的数量,以及指示直接馈通的标记。 |
| 根模型、库或子系统 | 列出根模型中引用的所有唯一库,以及库模块的名称和数量。 |
| 根模型 | 列出用于根模型每个编译阶段的时间和额外内存。此信息可帮助用户排除有关模型编译速度和内存的问题。 |
| 根模型 | 列出与 您必须显式指定此选项,因为它不是默认分析的一部分。 |
| 不适用 | 执行所有诊断。 |
注意
在首次对模型进行仿真之前运行 CompileStats
诊断会显示较大的内存使用率。但是,后续对模型运行 CompileStats
诊断所需要的内存将变少。
[txtRpt, sRpt] = sldiagnostics('sys')
将诊断信息返回为文本报告 txtRpt
和结构体数组 sRpt
,其中包含以下对应于各诊断选项的字段:
blocks
stateflow
sizes
links
compilestats
[txtRpt, sRpt] = sldiagnostics('sys',
仅返回指定的选项。如果您选择的选项仅指定一种类型的分析,则 options
)sRpt
仅包含该分析的结果。
[txtRpt, sRpt] = sldiagnostics('sys', 'CompileStats')
在 txtRpt
和 sRpt
中返回有关时间和内存使用情况的信息。
[txtRpt, sRpt] = sldiagnostics('sys', 'RTWBuildStats')
将 Simulink Coder 编译统计信息以及针对 CompileStats
报告的信息包括在 sRpt
输出中。
txtRpt
包含 Simulink 和 Simulink Coder 的每个阶段所花费的时间的格式化文本输出(如果您指定了RTWBuildStats
),例如:Compile Statistics For: rtwdemo_counter Cstat1: 0.00 seconds Model compilation pre-start Cstat2: 0.00 seconds Stateflow compile pre-start notification Cstat3: 0.10 seconds Post pre-comp-start engine event Cstat4: 10.00 seconds Stateflow compile start notification Cstat5: 0.00 seconds Model compilation startup completed
sRpt
是包含每个阶段的时间和内存使用情况的 MATLAB® 结构体,例如:sRpt = Model: 'myModel1' Statistics: [1x134 struct]
sRpt.Statistics
数组的大小指示操作过程中执行的编译阶段的数量。检查 Statistics 字段:sRpt.Statistics(1) = Description: 'Phase1' CPUTime: 7.2490 WallClockTime 4.0092 ProcessMemUsage: 26.2148 ProcessMemUsagePeak: 28.6680 ProcessVMSize: 15.9531
CPUTime
和WallClockTime
显示相应阶段的已用时间(以秒为单位)。ProcessMemUsage
、ProcessMemUsagePeak
和ProcessVMSize
显示阶段执行过程中消耗的内存(以 MB 为单位)。
检查以下关键指标以了解性能:
WallClockTime
- 每个阶段的实时已用时间(以秒为单位)。将每个阶段的WallClockTime
汇总可获得执行操作所花费的总时间:ElapsedTime = sum([statRpt.Statistics(:).WallClockTime]);
ProcessMemUsage
- 每个阶段消耗的内存量。将所有阶段的ProcessMemUsage
汇总可获得整个操作过程中的内存消耗:TotalMemory = sum([statRpt.Statistics(:).ProcessMemUsage]);
ProcessMemUsagePeak
- 每个阶段中的最大内存分配量。获取所有阶段中该指标的最大值可找到操作过程中的峰值内存分配:PeakMemory = max([statRpt.Statistics(:).ProcessMemUsagePeak]);
注意
只有在 Microsoft® Windows® 平台上才能使用内存统计信息。
示例
以下命令将计数并列出 Simulink 软件随附的 sldemo_bounce
模型中使用的每种类型的模块。
openExample('simulink_general/sldemo_bounceExample') sldiagnostics('sldemo_bounce', 'CountBlocks')
以下命令将计数并列出 Stateflow 软件随附的 sf_boiler
模型中使用的唯一模块和 Stateflow 对象;返回的文本报告将被捕获为 myReport
。
openExample('stateflow/BangBangControlUsingTemporalLogicExample') myReport = sldiagnostics('sf_boiler', 'CountBlocks', 'CountSF')
以下命令将打开 Simulink 随附的 f14
模型,并计算 Controller
子系统中使用的模块数。
openExample('simulink_aerospace/AircraftLongitudinalFlightControlExample') sldiagnostics('f14/Controller', 'CountBlocks')
以下命令对 f14
模型运行 Sizes
和 CompileStats
诊断,将结果捕获为文本报告和结构体数组。
[txtRpt, sRpt] = sldiagnostics('f14', 'Sizes', 'CompileStats')
版本历史记录
在 R2006a 中推出