识别数据类型匹配库克隆检测
本示例展示了如何以编程方式检测克隆,并确定库子系统的输入数据类型是否与模型中克隆的输入数据类型匹配。有关克隆检测 API 的详细信息,请参阅通过编程方式检测和替换子系统克隆。
本示例使用模型 ex_clone_datatype 和库文件 lib_datatype 来展示如何确定库子系统与模型中的克隆之间的数据类型匹配。
将模型和库文件保存到当前工作目录。
1.使用 类创建一个对象。Simulink.CloneDetection.Settings
cloneDetectionSettings = Simulink.CloneDetection.Settings();
2.将库文件 lib_datatype 添加到 cloneDetectionSettings 对象中。
cloneDetectionSettings.Libraries = "lib_datatype"
cloneDetectionSettings =
Settings with properties:
IgnoreSignalName: 0
IgnoreBlockProperty: 0
ExcludeModelReferences: 0
ExcludeLibraryLinks: 0
ParamDifferenceThreshold: 50
ReplaceExactClonesWithSubsystemReference: 0
Libraries: {'/tmp/Bdoc26a_3233028_388326/tp3446deca/slcheck-ex23244177/lib_datatype.slx'}
Folders: {}
DetectClonesAcrossModel: 0
ExcludeInactiveRegions: 0
DataTypeCheck: 0
3.将 DataTypeCheck 设置为 1。
cloneDetectionSettings.DataTypeCheck = 1
cloneDetectionSettings =
Settings with properties:
IgnoreSignalName: 0
IgnoreBlockProperty: 0
ExcludeModelReferences: 0
ExcludeLibraryLinks: 0
ParamDifferenceThreshold: 50
ReplaceExactClonesWithSubsystemReference: 0
Libraries: {'/tmp/Bdoc26a_3233028_388326/tp3446deca/slcheck-ex23244177/lib_datatype.slx'}
Folders: {}
DetectClonesAcrossModel: 0
ExcludeInactiveRegions: 0
DataTypeCheck: 1
4.使用 cloneDetectionSettings 对象执行函数 Simulink.CloneDetection.findClones。
cloneResults = Simulink.CloneDetection.findClones('ex_clone_datatype',cloneDetectionSettings)
cloneResults =
Results with properties:
Clones: [1×1 struct]
ExceptionLog: {}
cloneResults 是 类的一个对象,它有两个属性,Simulink.CloneDetection.ResultsClones 和 ExceptionLog。
5.查看克隆组。
cloneResults.Clones.CloneGroups(1)
ans =
struct with fields:
Name: 'lib_datatype/SS4'
Summary: [1×1 struct]
CloneList: {7×1 cell}
6.查看第一个克隆组的克隆列表。
cloneResults.Clones.CloneGroups(1).CloneList{1}
ans =
struct with fields:
Name: 'Clone Region 1'
PatternBlocks: {8×1 cell}
DataTypeMatch: 0
CloneList 是一个结构体,包含字段 Name、PatternBlocks 和 DataTypeMatch。DataTypeMatch 字段为 0,表示库子系统的输入数据类型与 Clone Region 1 的输入数据类型不匹配。