Клоны моделируют шаблоны, которые имеют идентичные типы блока и связи. Можно осуществить рефакторинг модель путем создания библиотечных блоков из этих шаблонов клона и заменяющий клоны на ссылки на библиотечные блоки, которые позволяют вам снова использовать компоненты. Для получения дополнительной информации о клонах, смотрите, Включают Повторное использование Компонента при помощи Обнаружения клонов.
Можно искать клоны в подсистеме или где угодно в модели.
Клоны подсистемы: Идентифицирует клоны только в подсистемы.
Клоны где угодно: Идентифицирует клоны где угодно в модели.
В этом примере показано, как использовать приложение Clone Detector и API, чтобы идентифицировать клоны где угодно в вашей модели, и затем заменить их на ссылки на библиотечные блоки.
Откройте модель mClonesAnywhereSimilar. В MATLAB® командная строка, введите:
addpath(fullfile(docroot,'toolbox','simulink','examples')) mClonesAnywhereSimilar

Сохраните модель в текущей рабочей директории.
На вкладке Apps нажмите Clone Detector. В качестве альтернативы в командной строке MATLAB, введите:
clonedetection("mClonesAnywhereSimilar")Чтобы настроить параметры для обнаружения клонов, нажмите Settings. Под Clone anywhere settings нажмите Detect Clones Across Model.

Minimum Region Size и Minimum Clone Group Size установлены в 2 по умолчанию. Параметр Minimum Region Size представляет минимальные блоки, необходимые на область клона, и параметр Minimum Clone Group Size представляет минимальные случаи клона, должен был задать его как группу клонов.
Нажмите Find Clones, чтобы идентифицировать клоны.
Приложение подсвечивает клоны. Точные клоны подсвечены в красных и подобных клонах, подсвечены в синем.

Клоны, подсвеченные в этом примере, включают клоны, идентифицированные в подсистем и блока Simulink, соединенного с подсистемой.
Нажмите Replace Clones.
Приложение осуществляет рефакторинг модель и заменяет клоны на ссылки на newLibraryFile файл библиотеки в вашей рабочей директории. Приложение заменяет блоки клона Simulink за пределами подсистем с соединенными блоками Subsystem.
Примечание
Только Точный рефакторинг клона поддерживается.
Используйте Simulink.CloneDetection.Settings класс, чтобы создать объект.
cloneDetectionSettings = Simulink.CloneDetection.Settings()
cloneDetectionSettings =
IgnoreSignalName: 0
IgnoreBlockProperty: 0
ExcludeModelReferences: 0
ExcludeLibraryLinks: 0
FindClonesRecursivelyInFolders: 1
ParamDifferenceThreshold: 50
ReplaceExactClonesWithSubsystemReference: 0
Libraries: {}
Folders: {}
DetectClonesAcrossModel: 0
ExcludeInactiveRegions: 0Чтобы искать клоны где угодно в модели, установите DetectClonesAcrossModel к 1.
cloneDetectionSettings.DetectClonesAcrossModel = 1
cloneDetectionSettings =
IgnoreSignalName: 0
IgnoreBlockProperty: 0
ExcludeModelReferences: 0
ExcludeLibraryLinks: 0
SelectedSystemBoundary: []
FindClonesRecursivelyInFolders: 1
ParamDifferenceThreshold: 50
ReplaceExactClonesWithSubsystemReference: 0
Libraries: {}
Folders: {}
DetectClonesAcrossModel: 1
ExcludeInactiveRegions: 0
MinimumRegionSize: 2
MinimumCloneGroupSize: 2MinimumRegionSize и MinimumCloneGroupSize установлены в 2 по умолчанию. Можно изменить их значения.
Чтобы найти клоны, выполните функциональный Simulink. CloneDetection.findClones использование cloneDetectionSettings объект.
cloneResults = Simulink.CloneDetection.findClones('mClonesAnywhereSimilar',cloneDetectionSettings)cloneResults =
Clones: [1×1 struct]
ExceptionLog: ''cloneResults.Clones =
Results with properties:
Summary: [1×1 struct]
CloneGroups: [1×2 struct]Для получения дополнительной информации о API обнаружения клонов смотрите, Обнаруживают и Клоны Подсистемы Замены Программно.