主要内容

以编程方式在多个模型中通过循环检测并替换克隆

此示例说明如何以编程方式,通过循环逐个对模型进行操作,在多个模型中检测并替换克隆。有关克隆检测 API 的详细信息,请参阅Detect and Replace Subsystem Clones Programmatically

此示例说明如何使用库文件 clones_library 作为子系统引用来替换克隆,以编程方式为五个 Simulink® 模型检测并替换克隆。

1.打开模型:

     ex_detect_clones_A
     ex_detect_clones_B
     ex_detect_clones_C
     ex_detect_clones_D
     ex_detect_clones_E
     clones_library

将模型和库文件保存在当前工作目录中。

2.创建一个数组,用于添加模型:

     modelList = {};

3.将模型添加到 modelList 数组:

      modelList{end+1,1} = 'ex_detect_clones_A';
      modelList{end+1,1} = 'ex_detect_clones_B';
      modelList{end+1,1} = 'ex_detect_clones_C';
      modelList{end+1,1} = 'ex_detect_clones_D';
      modelList{end+1,1} = 'ex_detect_clones_E';
      modelList{end+1,1} = 'ex_detect_clones_F';

4.定义容器来存储模型的 ResultsReplacementResultsequivalencyCheck 对象。

     cloneResultsStorage = containers.Map();
     cloneReplacementStorage = containers.Map();
     equivalencyCheckStorage = containers.Map();

5.将库文件添加到从 Settings 类创建的 cloneDetectionSettings 对象中。

     libName = 'clones_library';
     cloneDetectionSettings = Simulink.CloneDetection.Settings();
     cloneDetectionSettings = cloneDetectionSettings.addLibraries(libName);

6.使用循环通过 Simulink.CloneDetection.findClonesSimulink.CloneDetection.replaceClonesSimulink.CloneDetection.checkEquivalency 函数遍历模型。

     for modelIndex = 1:length(modelList)
          modelName = modelList{modelIndex};
         try
             cloneResults = Simulink.CloneDetection.findClones(modelName, cloneDetectionSettings);
             cloneResultsStorage(modelName) = cloneResults;
             cloneReplacementResults = Simulink.CloneDetection.replaceClones(cloneResults);
             cloneReplacementStorage(modelName) = cloneReplacementResults;
             equivalencyCheckResults = Simulink.CloneDetection.checkEquivalency(cloneReplacementResults);
             equivalencyCheckStorage(modelName) = equivalencyCheckResults;
         catch exception
         end
     end

您可以访问各个模型的 cloneResultsStoragecloneReplacementStorageequivalencyCheckStorage 对象的结果。有关详细信息,请参阅Detect and Replace Subsystem Clones Programmatically

另请参阅

主题