В этом примере показано, как программно обнаруживать и заменять клоны на нескольких моделях в цикле, работая с моделями по отдельности. Дополнительные сведения об API-интерфейсах обнаружения клонов см. в разделе Программное обнаружение и замена клонов.
В этом примере показано, как обнаруживать и заменять клоны программно для пяти моделей Simulink ® с помощью файла библиотекиTestLib_1 в качестве ссылки на подсистему для замены клонов.
1. В командной строке MATLAB ® введите:
addpath(fullfile(docroot,'toolbox','simulink','examples'))
ex_clone_detection_A
ex_clone_detection_B
ex_clone_detection_C
ex_clone_detection_E
ex_clone_detection_F
TestLib_1Сохраните модели и файл библиотеки в текущей рабочей папке.
2. Создайте массив для добавления моделей:
modelList = {};3. Добавьте модели в modelList массив:
modelList{end+1,1} = 'ex_clone_detection_A';
modelList{end+1,1} = 'ex_clone_detection_B';
modelList{end+1,1} = 'ex_clone_detection_C';
modelList{end+1,1} = 'ex_clone_detection_E';
modelList{end+1,1} = 'ex_clone_detection_F';4. Определение контейнеров для хранения Results, ReplacementResults и equivalencyCheck объект для моделей.
cloneResultsStorage = containers.Map();
cloneReplacementStorage = containers.Map();
equivalencyCheckStorage = containers.Map();5. Добавление файла библиотеки в cloneDetectionSettings объект, созданный из Settings класс.
libName = 'TestLib_1';
cloneDetectionSettings = Simulink.CloneDetection.Settings();
cloneDetectionSettings = cloneDetectionSettings.addLibraries(libName);6. Используйте цикл для циклического перемещения по моделям с помощью Simulink.CloneDetection.findClones, Simulink.CloneDetection.replaceClones, и Simulink.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Вы можете получить доступ к результатам cloneResultsStorage, cloneReplacementStorage, и equivalencyCheckStorage для отдельных моделей. Дополнительные сведения см. в разделе Программное обнаружение и замена клонов.