Найти модели-ссылки и блоки Model в иерархии модели
Variants
опция будет удаляема. Использование MatchFilter
вместо этого. Для получения дополнительной информации см. раздел Вопросов совместимости.
[
предоставляет дополнительные опции поиска, используя одну или несколько пары "имя-значение". Например, чтобы сохранить модели загруженными вместо временной их загрузки, установите models
,blocks
]
= find_mdlrefs(system
,Name,Value
)KeepModelsLoaded
на true
.
Найдите модели-ссылки и блоки Model для всех моделей, на которые ссылается заданная модель.
load_system('sldemo_mdlref_basic'); [myModels,myModelBlks] = find_mdlrefs('sldemo_mdlref_basic')
myModels = 2x1 cell
{'sldemo_mdlref_counter'}
{'sldemo_mdlref_basic' }
myModelBlks = 3x1 cell
{'sldemo_mdlref_basic/CounterA'}
{'sldemo_mdlref_basic/CounterB'}
{'sldemo_mdlref_basic/CounterC'}
По умолчанию в find_mdlrefs
функция загружает и затем закрывает модели, которые еще не были загружены. Чтобы идентифицировать, какие модели загружаются, используйте find_system
функция.
find_mdlrefs('sldemo_mdlref_depgraph'); find_system('type','block_diagram')
ans = 0x1 empty cell array
Чтобы найти и загрузить все модели в иерархии модели, установите KeepModelsLoaded
на true
.
find_mdlrefs('sldemo_mdlref_depgraph','KeepModelsLoaded',true); find_system('type','block_diagram')
ans = 7x1 cell
{'sldemo_mdlref_thermostat' }
{'sldemo_mdlref_heater' }
{'sldemo_mdlref_F2C' }
{'sldemo_mdlref_outdoor_temp'}
{'sldemo_mdlref_house' }
{'sldemo_mdlref_heat2cost' }
{'sldemo_mdlref_depgraph' }
Модель верхней части и все ссылочные модели остаются загруженными. Если вы откроете sldemo_mdlref_depgraph
можно перемещаться по иерархии модели, не дожидаясь загрузки ссылочных моделей, когда вы откроете их.
system
- Имя системы, путь блока или указательИмя системы, путь к блоку или указатель, заданный как вектор символов, строковый скаляр или числовой скаляр.
Система должна быть файлом SLX, файлом MDL, блоком Model или блоком Subsystem.
Если вы задаете имя файла, не добавляйте расширение файла.
Типы данных: double
| char
| string
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
refModels = find_mdlrefs(topmodel,'KeepModelsLoaded',true,'ReturnTopModelAsLastElement',false)
'AllLevels'
- Уровни для поискаtrue
или 1
(по умолчанию) | false
или 0
Уровни для поиска, заданные как разделенная разделенными запятой парами, состоящая из 'AllLevels'
и числовое или логическое 1
(true
) или 0
(false
).
true
- Поиск всех блоков Model в иерархии модели заданной system
.
false
- Поиск только в системе верхнего уровня.
Типы данных: logical
'KeepModelsLoaded'
- Опция, чтобы сохранить модели загруженнымиfalse
или 0
(по умолчанию) | true
или 1
Опция для сохранения загруженных моделей, заданная как разделенная разделенными запятой парами, состоящая из 'KeepModelsLoaded'
и числовое или логическое 1
(true
) или 0
(false
).
По умолчанию функция загружается, а затем закрывает модели, которые еще не были загружены. Чтобы сохранить модели загруженными, установите этот аргумент равным true
. Сохранение загруженных моделей может быть полезным, если вы планируете взаимодействовать с моделями после их нахождения.
Типы данных: logical
'IncludeProtectedModels'
- Опция включения защищенных моделейfalse
или 0
(по умолчанию) | true
или 1
Опция включения защищенных моделей в результаты поиска, заданная как разделенная разделенными запятой парами, состоящая из 'IncludeProtectedModels'
и числовое или логическое 1
(true
) или 0
(false
).
Этот параметр влияет только на возвращенный список ссылок на модели; Это не влияет на возвращенный список блоков Model.
Типы данных: logical
'Variants'
- Опция включения вариантных моделей'ActivePlusCodeVariants'
(по умолчанию) | 'ActiveVariants'
| 'AllVariants'
Опция включения исполнительных моделей в результаты поиска, заданная как разделенная разделенными запятой парами, состоящая из 'Variants'
и 'ActivePlusCodeVariants'
, 'ActiveVariants'
, или 'AllVariants'
.
'ActivePlusCodeVariants'
- Включите все модели вариантов в Variant Subsystem, которые активны в симуляции и являются частью сгенерированного кода.
'ActiveVariants'
- Включите активные модели вариантов в блок Variant Subsystem.
'AllVariants'
- Включите все модели вариантов в блок Variant Subsystem.
Примечание
Это ограничение поиска применяется только к Variant Subsystem блокам, для которых установлено Variant control mode expression
или label
. Используйте find_mdlrefs
функция со MatchFilter
опция для работы со всеми типами вариантов блоков.
Типы данных: char
| string
'CaseSensitive'
- Опция соответствия делу при поискеtrue
(по умолчанию) | false
Опция соответствия случая при поиске, заданная как true
для чувствительного к регистру поиска или false
для нечувствительного к регистру поиска.
Типы данных: logical
'FollowLinks'
- Опция поиска для перехода по библиотечным ссылкамfalse
(по умолчанию) | true
Опция поиска для перехода по библиотечным ссылкам, заданная как true
или false
. Если true
поиск следует по ссылкам в библиотечных блоках.
Типы данных: logical
'IncludeCommented'
- Опция поиска для включения комментируемых блоковtrue
(по умолчанию) | false
Опция для поиска, чтобы включить комментарии к блокам, заданная как true
или false
.
Типы данных: logical
'LookUnderMasks'
- Опции для поиска маскированных блоков'all'
(по умолчанию) | 'none'
| 'functional'
| 'graphical'
Опции для поиска маскированных блоков, заданные как:
'all'
- Поиск во всех маскированных блоках.
'none'
- Предотвратить поиск в маскированных системах.
'functional'
- Включить маскированные подсистемы, не имеющие диалоговых окон.
'graphical'
- Включить маскированные подсистемы, не имеющие рабочих областей или диалоговых окон.
Типы данных: char
| string
'MatchFilter'
- Указатель на функцию, чтобы соответствовать элементамУказатель на функцию, соответствующий элементам поиска, таким как блоки, система, линии, порты и аннотации. Использование MatchFilter
чтобы определить, должны ли элементы быть включены или пропущены в поиск.
Именованная функция должна быть определена в MATLAB® программный файл. Функция принимает указатель на элемент как вход и возвращает два выхода.
function [match, prune] = func(element)
Область входа element
- указатель на обрабатываемый блок.
Первый выход, match
, является логическим значением. Если false
поиск пропускает элемент.
Второй выход, prune
, является необязательным логическим значением, которое применяется только тогда, когда element
является подсистемой. Значение по умолчанию false
. Если для этого значения задано значение true
вся подсистема опущена из поиска.
Пример: Используйте MatchFilter
чтобы найти все блоки модели в модели, для которой InitFcn
определяется с помощью функции filter, initFcnMdlBlocks
:
function match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle, 'InitFcn')); end
addpath(fullfile(matlabroot,'examples','simulink_variants','main')); model='slexVariantMdlRefCondProp'; load_system(model); [models,blocks] = find_mdlrefs(model, 'MatchFilter', @initFcnMdlBlocks)
Варианты: Simulink обеспечивает Simulink.match.activeVariants
и Simulink.match.codeCompileVariants
соответствовать функциям filter, которые можно использовать, чтобы найти активные варианты или кодировать варианты блоков. Для этого скомпилируйте модель и примените соответствующую MatchFilter
опции:
Simulink.match.activeVariants
- Совпадает с блоками, которые активны в симуляции после компиляции модели
Simulink.match.codeCompileVariants
- Совпадает с блоками, которые являются частью сгенерированного кода после компиляции модели
Для примера используйте Simulink.match.activeVariants
опция для поиска активных вариантов в модели:
addpath(fullfile(matlabroot,'examples','simulink_variants','main')); model='slexVariantMdlRefCondProp'; load_system(model); set_param(model, 'SimulationCommand', 'update'); [models,blocks] = find_mdlrefs(model, 'MatchFilter', @Simulink.match.activeVariants);
Для примера используйте Simulink.match.codeCompileVariants
опция для поиска вариантов, являющихся частью сгенерированного кода C:
addpath(fullfile(matlabroot,'examples','simulink_variants','main')); load_system('slexVariantMdlRefCondProp'); assignin('base','VSS_MODE',2); slexVariantMdlRefCondProp([], [], [], 'compileForRTW'); [models,blocks]=find_mdlrefs('slexVariantMdlRefCondProp', 'MatchFilter', @Simulink.match.codeCompileVariants); slexVariantMdlRefCondProp([], [], [], 'term');
'IncludeCommented'
- Опция включения комментируемых блоковfalse
или 0
(по умолчанию) | true
или 1
Опция включения комментируемых блоков в результаты поиска, заданная как разделенная разделенными запятой парами, состоящая из 'IncludeCommented'
и числовое или логическое 1
(true
) или 0
(false
).
Типы данных: logical
'ReturnTopModelAsLastElement'
- Опция включения указанной системыtrue
или 1
(по умолчанию) | false
или 0
Опция включения указанной системы в результаты поиска, заданная как разделенная разделенными запятой парами, состоящая из 'ReturnTopModelAsLastElement'
и числовое или логическое 1
(true
) или 0
(false
).
По умолчанию последним элементом в возвращенном списке моделей-ссылок является имя файла модели, библиотеки или подсистемы, заданное с помощью system
аргумент. Если вы задаете блок, последний элемент является именем файла, который содержит его.
Типы данных: logical
models
- Имена моделейИмена моделей, возвращенные как массив ячеек из векторов символов.
По умолчанию последним элементом является имя файла модели, библиотеки или подсистемы, заданное с помощью system
аргумент. Если вы задаете блок, последним элементом является содержащая его модель, библиотека или файл подсистемы.
blocks
- Имена блоков ModelИмена Model блоков, возвращенные как массив ячеек из векторов символов.
find_mdlrefs
обескураженНе рекомендуемый запуск в R2020b
find_mdlrefs
Функция предоставляет два способа определить, следует ли искать по всем уровням иерархии модели. Оба метода дают одинаковые результаты, но только метод пары "имя-значение" позволяет вам задать дополнительные опции.
Вместо того, чтобы определять, искать ли все уровни иерархии модели с логическим аргументом в качестве второго, используйте AllLevels
Пара "имя-значение".
Variants
будет удаленоПредупреждает, начиная с R2021a
The Variants
опция будет удаляема из find_mdlrefs
в будущем релизе. Скрипты, которые используют Variants
опция продолжает работать с предупреждением.
Чтобы найти Model блоки, которые активны во время симуляции или генерации кода, скомпилируйте модель и используйте find_mdlrefs
функция со MatchFilter
опция.
find_mdlrefs
с Variants
и MatchFilter
опции в модели с вариантными блокамиПоведение изменено в R2021a
Варианты: Использование find_mdlrefs
функция без Variants
опция включает только блоки Model, которые активны во время симуляции или генерации кода в поиске по умолчанию.
Рассмотрим модель с Variant Model блоком, который имеет два варианта выбора, Mdl_Linear_ Controller
и Mdl_NonLinear_Controller
.
Эта команда возвращает только активные блоки Model в модели.
[myModels,myModelBlks] = find_mdlrefs... ('sldemo_variant_subsystems_modelblocks')
myModels = 2×1 cell array {'mdlref_nonlinear_controller' } {'sldemo_variant_subsystems_modelblocks'} myModelBlks = 1×1 cell array {'sldemo_variant_subsystems_modelblocks/Controller/Mdl_NonLinear_Controller'}
MatchFilter: Использование find_mdlrefs
функция со MatchFilter
опция применяет фильтры для активных и неактивных вариантов по умолчанию.
Рассмотрим модель с Variant Model блоком, который имеет два варианта выбора, Mdl_Linear_ Controller
и Mdl_NonLinear_Controller
. Область функции filter initFcnMdlBlocks
находит все блоки Model, для которых InitFcn
установлен обратный вызов.
function match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle, 'InitFcn')); end
Эта команда возвращает как активные, так и неактивные блоки Model в модели.
[myModels,myModelBlks] = find_mdlrefs('sldemo_variant_subsystems_modelblocks',... 'MatchFilter', @initFcnMdlBlocks)
myModels = 3×1 cell array {'mdlref_linear_controller' } {'mdlref_nonlinear_controller' } {'sldemo_variant_subsystems_modelblocks'} myModelBlks = 2×1 cell array {'sldemo_variant_subsystems_modelblocks/Controller/Mdl_Linear_Controller' } {'sldemo_variant_subsystems_modelblocks/Controller/Mdl_NonLinear_Controller'}
find_mdlrefs
не поддерживает использование MatchFilter
наряду со Variants
опция.
Эта команда приводит к ошибке:
find_mdlrefs(bdroot,'MatchFilter',@Simulink.match.activeVariants,... 'Variants','ActiveVariants');
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.