Найдите модели, на которые ссылаются, и блоки 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
— Имя системы, блок path или указательИмя системы, блок path или указатель в виде вектора символов, строкового скаляра или числового скаляра.
Система должна быть файлом 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
ложь
).
true
— Ищите все блоки Model в иерархии модели заданного system
.
false
— Ищите только систему верхнего уровня.
Типы данных: логический
'KeepModelsLoaded'
— Опция, чтобы сохранить модели загруженнымиfalse
или 0
(значение по умолчанию) | true
или 1
Опция, чтобы сохранить модели загруженными в виде разделенной запятой пары, состоящей из 'KeepModelsLoaded'
и числовой или логический 1
TRUE
) или 0
ложь
).
По умолчанию функциональные загрузки и затем закрывают модели, которые уже не загрузились. Чтобы сохранить модели загруженными, установите этот аргумент на true
. Хранение загруженных моделей может быть полезным, если вы планируете взаимодействие с моделями после нахождения их.
Типы данных: логический
'IncludeProtectedModels'
— Опция, чтобы включать защищенные моделиfalse
или 0
(значение по умолчанию) | true
или 1
Опция, чтобы включать защищенные модели в результаты поиска в виде разделенной запятой пары, состоящей из 'IncludeProtectedModels'
и числовой или логический 1
TRUE
) или 0
ложь
).
Эта установка только влияет на возвращенный список моделей, на которые ссылаются; Это не влияет на возвращенный список блоков Model.
Типы данных: логический
'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
для поиска без учета регистра.
Типы данных: логический
'FollowLinks'
— Опция для поиска, чтобы перейти по ссылкам библиотекиfalse
(значение по умолчанию) | true
Опция для поиска, чтобы перейти по ссылкам библиотеки в виде true
или false
. Если true
, поиск переходит по ссылкам в библиотечные блоки.
Типы данных: логический
'IncludeCommented'
— Опция для поиска, чтобы включать прокомментированные блокиtrue
(значение по умолчанию) | false
Опция для поиска, чтобы включать прокомментированные блоки в виде true
или false
.
Типы данных: логический
'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
ложь
).
Типы данных: логический
'ReturnTopModelAsLastElement'
— Опция, чтобы включать заданную системуtrue
или 1
(значение по умолчанию) | false
или 0
Опция, чтобы включать заданную систему в результаты поиска, в виде разделенной запятой пары, состоящей из 'ReturnTopModelAsLastElement'
и числовой или логический 1
TRUE
) или 0
ложь
).
По умолчанию последним элементом в возвращенном списке моделей, на которые ссылаются, является имя модели, библиотеки или файла подсистемы, который вы задали с system
аргумент. Если вы задаете блок, последним элементом является имя файла, который содержит его.
Типы данных: логический
models
— Имена моделейИмена моделей, возвращенных как массив ячеек из символьных векторов.
По умолчанию последним элементом является имя модели, библиотеки или файла подсистемы, который вы задали с system
аргумент. Если вы задаете блок, последним элементом является модель, библиотека или файл подсистемы, который содержит его.
blocks
— Имена блоков ModelИмена блоков Model, возвращенных как массив ячеек из символьных векторов.
find_mdlrefs
препятствуетсяНе рекомендуемый запуск в R2020b
find_mdlrefs
функция обеспечивает два способа задать, искать ли все уровни иерархии модели. Оба метода дают те же результаты, но только метод пары "имя-значение" позволяет вам задавать дополнительные опции.
Вместо того, чтобы задать, искать ли все уровни иерархии модели с логическим в качестве второго аргумента, используйте AllLevels
пара "имя-значение".
Variants
будет удаленПредупреждает запуск в R2021a
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.