比较 Simulink 模型
浏览 Simulink 模型比较报告
您可以对使用任何 Simulink® 版本创建的模型进行比较。比较工具基于 SLX 文件生成比较报告,必要时还会重新保存为最新版本。使用报告查看差异,查看原始模型中突出显示的更改并合并差异。
比较报告仅显示更改,而不显示整个文件内容。该报告显示文件不同部分的分层视图,不显示文件的相同部分。要了解报告,请参阅关于 Simulink 模型比较。
要逐一查看差异,请在比较选项卡上的导航部分,点击下一个或上一个。请参阅逐一查看更改。
您也可以通过点击选择层次结构树中的项并观察以下显示特征:
所选项会在框中突出显示。
如果所选项是匹配对的一部分,则该项会同时在左右两侧树的框中突出显示。
当您选择一个项时,将显示原始模型并突出显示对应的项。请参阅查看原始模型中的更改。
报告项的突出显示反映了各项差异的性质,如下所示:
报告项的类型 | 突出显示 | 注释 |
---|---|---|
修改项 | 紫色 | 修改项是两个文件之间存在差异的匹配对。当您选择某个修改项时,它会同时在两侧树的框中突出显示。 |
插入项 | 蓝色 | 当您选择某个不匹配的项时,它仅在一侧树的框中突出显示。 |
删除项 | 黄色 | |
容器 | 无 | 没有突出显示的行表示一个容器项,其中包含其他经过修改或不匹配的项。 |
图标表示项的类别,例如:模型、子系统、Stateflow® 状态机或图、模块、信号线、参数等。
要展开或过滤树视图,请在工具条上找到下列功能选项:
过滤器 - 使用过滤器仅显示您感兴趣的更改。默认情况下,报告会隐藏所有非功能性更改,例如项的重新定位。关闭过滤器可查看所有差异,包括非功能性更改。请参阅过滤器比较报告。
查找 - 打开“查找”对话框,您可以在其中搜索项。
如果要交换文件,请在比较选项卡上选择交换。报告会对两侧内容进行交换并返回比较结果。刷新还会再次执行分析。
要创建新报告,请参阅选择要比较的 Simulink 模型。
有关说明的示例,另请参阅模型比较示例。
逐一查看更改
在比较选项卡上的导航部分中,当您点击下一个箭头按钮(或者焦点在报告中时按向下键)时,您将按以下顺序逐一查看报告中的各组更改:
第一次点击下一个时,它会选中第一个有更改(紫色)的或插入(蓝色)的节点。
使用下一个按钮逐一查看差异。
当选定的项在右侧树中有匹配项时,它们也会突出显示。
对于没有颜色背景的白色节点,如果其下没有参数更改,按“下一个”会跳过这些节点。白色节点是层次结构中没有差异的部分。
如果插入或删除项包含子节点且这些子节点也全部是插入或删除项,则按下一个将跳过这些子节点。例如,如果插入一个子系统,按下一个会选择顶层子系统节点,然后跳过该子系统内的所有节点(如果它们都是插入项)并选择下一个差异。
在模型中进行突出显示时,下一个可最大限度地减少上下文切换。当您点击下一个时,报告将在报告的左侧和右侧树中逐一显示模型、子系统或图的相同级别上的所有差异,然后再移至报告的下一级别。例如,您可以在左侧和右侧树中逐一查看某个子系统的所有差异,然后再移到另一个子系统。
当您逐一查看所有更改后,下一个会在结束位置停止。
如果您点击报告中的某一项,下一个/上一个控制项将从您选择的点开始逐一显示更改。
查看原始模型中的更改
当您比较 Simulink 模型时,可以选择在选择报告项时在原始模型中显示对应的项。您可以使用此突出显示功能来查看原始模型中的更改。当您选择一个项时,报告将突出显示模型中的对应项。
可以使用立即突出显示按钮和始终突出显示复选框来控制显示。
有关详细信息,请参阅Display Differences in Original Models。
合并差异
要进行合并,请在比较选项卡上点击合并模式。“目标”窗格显示在报告的底部。使用按钮可选择要保留在目标中的差异。有关详细信息,请参阅从比较报告合并 Simulink 模型。
打开选定节点的子级比较报告
如果针对特定的参数还可进行其他比较,您会看到一个比较按钮,点击该按钮可以打开针对该对节点的比较报告。例如,如果模型工作区中存在差异,则可以点击比较打开一个新报告,供您查看变量中的差异。
如果报告不能显示所有详细信息(例如,长字符串或脚本),则可以打开针对参数的新比较。
如果原始模型包含 MATLAB Function 模块组件并且发现差异,请点击 MATLAB Function 模块报告项末尾的比较按钮以在比较工具中打开新比较,这会显示 MATLAB Function 模块组件的文本差异报告。您可以合并来自文本比较报告的 MATLAB Function 模块代码中的差异。请参阅从比较报告合并 Simulink 模型。
如果原始模型包含真值表,并且存在差异:
点击 MATLAB Function 节点末尾的比较按钮可查看所有更改的汇总。
点击真值表节点可反向注释并同时显示两个真值表编辑器。
点击参数上的比较按钮可打开仅显示条件表差异的新文本比较。
同样,点击操作表的比较按钮,仅查看操作更改。
了解报告层次结构和匹配
注意
如果文件先前对应部分的变化太大,则分析可能无法检测到匹配。
如果在报告中看不到预期的更改,请关闭过滤器并查看标识的所有更改。请参阅过滤器比较报告。
过滤器比较报告
您可以定义自定义过滤器以简化报告并专注于指定的元素。您可以导入和导出过滤器以进行共享。使用内置过滤器可控制更改类别的显示。关闭过滤功能可查看标识的所有更改。
要查看可用的过滤器以及它们是否应用于当前报告,请在比较选项卡的过滤器部分中,点击向下箭头以展开过滤器库。点击过滤器名称可切换是否应用它们。在过滤器部分中,点击显示将所选过滤器更改包括在报告中,或点击隐藏将所选过滤器更改从报告中排除。
使用过滤器可仅包含您感兴趣的更改。默认情况下,报告会隐藏所有非功能性更改。这些更改对设计行为(例如项目的重新定位)没有影响。关闭过滤器可查看所有差异,包括非功能性更改。如果在报告中看不到预期的更改,请尝试关闭筛选器。
内置过滤器包括:
信号线。选择对信号线的所有更改,包括功能性更改。
非功能更改。报告将模型文件中的某些项标识为非功能性项,例如表示模块、系统、图或标签位置的参数的项,模块和信号线的字体和颜色设置,以及系统打印和显示设置。
模块默认值。模块默认值很少更改,当添加或删除模块时,这些内容会使得报告更长。隐藏模块默认值可让报告更为简单。
要显示所有更改,请使用以下任一方法:
不隐藏任何内容 - 点击隐藏并禁用库中的所有过滤器。
显示所有内容 - 创建自定义过滤器。在“新建过滤器”对话框中,删除第一列的内容,使其显示任何,然后删除参数名称下的行的其余内容。点击显示并启用库中的“everything”过滤器。
要定义新的自定义过滤器,请执行下列操作:
在比较选项卡的过滤器部分中,点击新建过滤器。
在“新建过滤器”对话框中,为新过滤器定义一个或多个规则。例如,您可以选择参数或特定类型的模块或值。建议值取决于比较报告中的项目。为过滤器指定唯一名称,然后点击应用。
要检查过滤器是否按您的预期应用于项目,请仅启用过滤器库中的新过滤器,然后点击显示。相对于检查过滤器是否在隐藏您要在报告中看到的更改,以上操作通常更容易。
观察如何定义这些自定义过滤器。
用途 | 选择列 | 参数名称 | 参数值 |
---|---|---|---|
过滤掉注释更改 | 注释 | 点击减号按钮可清除行。 | 保留为空白 |
过滤掉 Inport 和 Outport 模块更改 | 模块 | BlockType | 输入端口 |
要添加行,请点击添加规则,然后选择模块 | BlockType | 输出端口 | |
过滤掉采样时间参数更改 | 参数 | 采样时间 | 任何 |
注释更改:
Inport 和 Outport 模块更改:
采样时间参数更改:
例外
报告不会过滤掉对模块和系统名称、注释和 Stateflow 注释所做的非功能性更改,即使对这些项的更改不影响仿真结果也是如此。报告始终会显示这些更改以便于查看代码更改,因为它们可能包含有关用户意图的重要信息。
在极少数情况下,报告会过滤掉可能影响设计行为的更改。默认情况下,移动将作为非功能性更改被过滤掉,但在以下情况下,移动可能会更改设计行为:
在某些情况下移动模块可能会更改执行顺序。
在 Stateflow 图中,如果移动状态或结点使它们相交,则模型将无法仿真。
要在报告中查看这些类型的更改,请关闭针对非功能性更改的过滤器。
更改颜色预设
您可以更改并保存比较工具的差异颜色预设。您可以将颜色预设应用于所有比较类型。
在 MATLAB® 的“主页”选项卡中,点击预设。
在“预设项”对话框中的 MATLAB 下,点击比较。
根据需要编辑差异和合并的颜色设置。查看示例窗格中的颜色。
当前设置列表中显示默认(已修改)。
要在比较中使用修改后的设置,请点击应用并刷新比较报告。
要返回到默认颜色设置,请在“预设项”对话框中点击重置,然后点击应用。刷新比较报告。
如果要保存修改后的颜色预设以供将来的 MATLAB 会话使用,请点击另存为。为您的颜色设置配置文件输入一个名称,然后点击确定。
保存设置后,便可以在当前设置列表中选择它们。
保存比较结果
要保存比较结果,请使用下列比较选项卡按钮:
发布 > HTML、Word 或 PDF - 打开“保存”对话框,您可以在其中选择保存比较报告的可打印版本。请参阅Save Printable Report。
发布 > 工作区变量 - 将比较结果导出至工作区。请参阅Export Results to the Workspace。
您也可以使用 visdiff
函数将比较报告发布到文件。
模型比较示例
有关说明的示例,请参阅:
限制
MATLAB Online™ 不支持合并或创建自定义过滤器等功能。在 MATLAB Online 中,模型比较不支持 Stateflow 比较。
另请参阅
相关示例
- 选择要比较的 Simulink 模型
- Display Differences in Original Models
- 从比较报告合并 Simulink 模型
- Compare Revisions
- 工程中的源代码管理