В этом примере показано, как программно обнаружить и заменить клоны на моделях кратного в цикле путем работы с моделями индивидуально. Для получения дополнительной информации о 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
Save the models and library file in the current working directory.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_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 объекты для отдельных моделей. Для получения дополнительной информации смотрите, Обнаруживают и Клоны Подсистемы Замены Программно.