主要内容

sldiagnostics

显示 Simulink 系统的诊断信息

    说明

    sldiagnostics(modelName) 在命令行窗口中返回 Simulink® 模型或子系统的诊断信息,其中包含以下统计信息:

    • 模块计数 - 唯一模块的名称和计数

    • Stateflow® 计数 - 唯一 Stateflow 对象的名称和计数

    • 模型大小 - 状态、输出、输入、直接馈通标志和采样时间的计数

    • 库使用统计信息 - 所有库模块和引用库的名称和计数

    • 编译统计信息 - 每个阶段编译所用的时间和内存

    示例

    sldiagnostics(modelName,option1,...,optionN) 在命令行窗口中为 option1,...,optionN 中列出的诊断返回 Simulink 模型或子系统的诊断信息。例如,使用选项 CountBlocks 列出模型或子系统中唯一模块的名称和计数。

    示例

    [txtRpt,sRpt] = sldiagnostics(___) 与上述任一语法结合使用返回诊断信息,txtRpt 显示为格式化文本,sRpt 显示为结构体数组。

    示例

    示例

    全部折叠

    生成 Simulink 模型或子系统的诊断信息,并将其显示在命令行窗口中。

    打开示例 BangBangControlUsingTemporalLogicExample,并生成根模型 sf_boiler 的诊断信息。

    openExample('stateflow/BangBangControlUsingTemporalLogicExample');
    sldiagnostics('sf_boiler')

    如果您没有打开或加载模型,sldiagnostics 会加载模型并生成诊断信息。

    生成 Simulink 模型或子系统的特定诊断信息,并将其显示在命令行窗口中。

    打开示例 BangBangControlUsingTemporalLogicExample,并生成与子系统 sf_boiler/Bang-Bang Controller 中的模块和 Stateflow 对象的数量相关的诊断信息。

    openExample('stateflow/BangBangControlUsingTemporalLogicExample');
    sldiagnostics('sf_boiler/Bang-Bang Controller','CountBlocks','countSF')

    如果您没有打开或加载模型,sldiagnostics 会加载模型并生成诊断信息。

    生成模型的诊断信息,并将结果另存为格式化文本和结构体数组。

    打开示例 BangBangControlUsingTemporalLogicExample,并生成根模型 sf_boiler 的诊断信息。将这些报告保存在 myReportstrucRpt 中。

    openExample('stateflow/BangBangControlUsingTemporalLogicExample');
    [myReport,strucRpt] = sldiagnostics('sf_boiler');

    如果您没有打开或加载模型,sldiagnostics 会加载模型并生成诊断信息。

    生成模型用在编译上的时间和内存量,并使用这些信息来评估模型的性能。

    编译时间和内存使用量数据采集

    加载模型 vdp

    model = 'vdp';
    load_system(model);

    生成 vdp 的编译时间诊断信息,并将结果存储在 txtRptstrucRpt 中。

    [txtRpt,strucRpt] = sldiagnostics(model,'CompileStats');

    txtRptvdp 的每个阶段的编译时间和描述存储为格式化文本。sRptvdp 的每个阶段使用的编译时间和内存量存储为结构体。

    strucRpt
    strucRpt = struct with fields:
             Model: 'vdp'
        Statistics: [1×200 struct]
    
    

    strucRpt.Statistics 数组的大小指示编译过程中执行的编译阶段的数量。查找阶段 20 的编译时间和内存使用量统计信息。

    strucRpt.Statistics(20)
    ans = struct with fields:
                Description: 'Finding and refreshing Model blocks'
                    CPUTime: 0
              WallClockTime: 0.0010
            ProcessMemUsage: 0.0430
        ProcessMemUsagePeak: 0
              ProcessVMSize: 0
    
    

    报告的信息包括:

    CPUTime -CPU 主动处理 Simulink® 阶段所需的时间,以秒为单位。

    WallClockTime - 完成 Simulink 进程的一个阶段所用的实际时间,以秒为单位。WallClockTimeCPUtime、输入-输出时间和编程延迟的总和。

    ProcessMemUsage - 用于执行一个 Simulink 操作阶段的工作集大小,以 MB 为单位。一个进程的工作集大小是以物理方式映射到其进程上下文的内存量。

    ProcessMemUsagePeak - 用于执行一个 Simulink 操作阶段的峰值工作集大小,以 MB 为单位。

    ProcessVMSize - 在操作阶段开始时提交到 MATLAB® 进程的虚拟内存或地址空间的量。

    模型的性能分析

    使用以下关键度量来分析 vdp 的性能:

    • 总历时 - vdp 的每个阶段的挂钟时间总和。

    • 总内存 -vdp 的每个阶段使用的内存的总和。

    • 峰值内存 -vdp 的所有阶段中的某个阶段使用的最大内存。

    ElapsedTime = sum([strucRpt.Statistics(:).WallClockTime])
    ElapsedTime = 10.1960
    
    TotalMemory = sum([strucRpt.Statistics(:).ProcessMemUsage])
    TotalMemory = 153.1289
    
    PeakMemory = max([strucRpt.Statistics(:).ProcessMemUsagePeak])
    PeakMemory = 35.0273
    

    注意事项

    • 首次加载模型时,应使用 CompileStats 诊断选项。否则,sldiagnostics 会重用之前编译的模型对象,并为模型报告较低的时间使用量和内存使用量。

    • 内存使用量统计数据仅在 Microsoft® Windows® 平台上可用。

    输入参数

    全部折叠

    为其生成诊断信息的 Simulink 模型的名称或子系统的路径,指定为字符向量或字符串。

    示例: 'sf_boiler', 'sf_boiler/Bang-Bang Controller'

    数据类型: char | string

    表示特定诊断信息集的诊断选项,指定为字符向量或字符串。一些诊断选项仅适用于根模型。下表列出了诊断选项、兼容的输入系统类型和预期输出。

    诊断选项

    输入系统类型

    输出

    'CountBlocks'

    根模型、库或子系统

    系统中使用的唯一模块的名称和计数。这包括嵌套在封装子系统中或隐藏的模块。

    'CountSF'

    根模型、库或子系统

    系统中使用的唯一 Stateflow 对象的名称和计数。

    'Sizes'

    根模型

    模型中使用的状态、输出、输入、直接馈通标志和采样时间的计数。

    'Libs'

    根模型、库或子系统

    系统中引用的所有库模块和唯一库的名称和计数。

    'CompileStats'

    根模型

    用于编译模型的每个阶段的时间和内存。此信息可帮助用户排除有关模型编译速度和内存的问题。

    'RTWBuildStats'

    根模型

    Simulink Coder™ 编译统计信息以及使用 CompileStats 选项时返回的所有统计信息。

    您必须显式指定此选项,因为它不是默认分析的一部分。

    'All'

    根模型

    所有诊断,包括 RTWBuildStats 提供的诊断。

    在以下情况下,sldiagnostics 会发出警告:

    • 诊断选项和输入系统类型不兼容。

    • 输入系统类型是 Simulink 库。对于此类系统,sldiagnostics 不能为需要模型编译的选项(例如更新图)生成诊断。

    示例: 'CountBlocks'

    数据类型: char | string

    输出参量

    全部折叠

    以格式化文本形式存储 Simulink 系统的诊断信息的诊断报告,以字符向量形式返回。

    存储 Simulink 系统的诊断信息的诊断报告,以结构体数组形式返回。结构体数组具有与诊断选项对应的以下字段:

    • blocks

    • stateflow

    • sizes

    • links

    • compilestats

    • rtwbuildstats

    数据类型: struct

    版本历史记录

    在 R2006a 中推出