В этом примере показано, как программно обнаружить и заменить клоны на нескольких моделях в цикле путем работы с моделями индивидуально. Для получения дополнительной информации об 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
объекты для отдельных моделей. Для получения дополнительной информации смотрите Обнаружение и замена клонов программно.