Поиск систем, блоков, линий, портов и аннотаций
Variants
опция будет удаляема. Использование MatchFilter
вместо этого. Для получения дополнительной информации см. раздел Вопросов совместимости.
возвращает загруженные системы и объекты в тех системах, которые удовлетворяют критериям, заданным одной или несколькими Objects
= find_system(Name,Value
)Name,Value
аргументы в виде пар. Можно использовать этот синтаксис, чтобы задать ограничения поиска и найти конкретные значения параметров. Задайте ограничения поиска перед парами параметров и значений.
возвращает объекты в указанной системе, удовлетворяющие заданным критериям.Objects
= find_system(System
,Name,Value
)
Возвращает имена всех загруженных систем и их блоков.
load_system('vdp')
find_system
ans = 15x1 cell
{'vdp' }
{'vdp/Constant' }
{'vdp/More Info' }
{'vdp/More Info/Model Info'}
{'vdp/Mu' }
{'vdp/Mux' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
Возвращает загруженные системы и библиотеки, включая vdp
.
Возврат vdp
система и ее блоки.
load_system({'vdp','ex_sldemo_clutch'}) find_system('vdp')
ans = 15x1 cell
{'vdp' }
{'vdp/Constant' }
{'vdp/More Info' }
{'vdp/More Info/Model Info'}
{'vdp/Mu' }
{'vdp/Mux' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
Возвращает имена загруженных моделей, подсистем и библиотек. Имя подсистемы возвращается только в том случае, если подсистема может быть загружена независимо.
load_system('vdp'); find_system('type','block_diagram')
ans = 1x1 cell array
{'vdp'}
Верните имена всех блоков Goto, которые являются дочерними элементами подсистемы Unlocked в ex_sldemo_clutch
система.
load_system('ex_sldemo_clutch'); find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')
ans = 2x1 cell
{'ex_sldemo_clutch/Unlocked/Goto' }
{'ex_sldemo_clutch/Unlocked/Goto1'}
Копирайт 2020 The MathWorks, Inc.
Поиск в vdp
и возвращает имена всех блоков Gain, значение Gain которых установлено в 1
.
load_system('vdp'); find_system('vdp','BlockType','Gain','Gain','1')
ans = 1x1 cell array
{'vdp/Mu'}
Получаем указатели на все линии и аннотации в vdp
система. С 'FindAll'
функция возвращает указатели независимо от того, как вы задаете систему для поиска.
load_system('vdp'); L = find_system('vdp','FindAll','on','type','line')
L = 19×1
34.0044
33.0044
32.0044
31.0044
30.0044
29.0044
28.0044
27.0044
26.0044
25.0044
⋮
A = find_system('vdp','FindAll','on','type','annotation')
A = 2×1
36.0044
35.0044
Найдите любые параметры диалогового окна блока со значением 0
в vdp
и ex_sldemo_clutch
систем.
load_system({'vdp','f14'}) find_system({'vdp','f14'},'BlockDialogParams','0')
ans = 32×1 cell array {'vdp/More Info' } {'vdp/More Info/Model Info' } {'vdp/Scope' } {'vdp/x2' } {'vdp/Out1' } {'vdp/Out1' } {'vdp/Out2' } {'vdp/Out2' } {'f14/Aircraft↵Dynamics↵Model' } {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'} {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'} {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)' } {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)' } . . .
Найдите все блоки на верхнем уровне загруженных в настоящее время систем со значением параметров диалога блоков, которое начинается с 3
.
load_system({'ex_sldemo_clutch','vdp'}); find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 4x1 cell
{'vdp/Scope' }
{'vdp/Scope' }
{'vdp/Square' }
{'ex_sldemo_clutch/w'}
При поиске с помощью регулярных выражений можно задать часть вектора символов, которая должна совпадать, чтобы вернуть все объекты, которые содержат этот вектор символов. Найдите все блоки inport и outport в ex_sldemo_clutch
модель.
load_system('ex_sldemo_clutch'); find_system('ex_sldemo_clutch','regexp','on','blocktype','port')
ans = 39x1 cell
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction Mode Logic/Tin' }
{'ex_sldemo_clutch/Friction Mode Logic/Tfmaxs' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/lock' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/unlock' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/locked' }
{'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tin'}
{'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tf' }
{'ex_sldemo_clutch/Friction Mode Logic/locked' }
{'ex_sldemo_clutch/Friction Mode Logic/lock' }
{'ex_sldemo_clutch/Friction Mode Logic/unlock' }
{'ex_sldemo_clutch/Friction Mode Logic/Tf' }
{'ex_sldemo_clutch/Locked/Tin' }
{'ex_sldemo_clutch/Locked/w' }
{'ex_sldemo_clutch/Unlocked/Tfmaxk' }
{'ex_sldemo_clutch/Unlocked/Tin' }
{'ex_sldemo_clutch/Unlocked/we' }
⋮
В этом примере myModel
содержит одну подсистему, которая является библиотечной ссылкой. После последнего открытия модели к соответствующей подсистеме в библиотеке был добавлен Gain блок.
Откройте модель. Использовать find_system
с 'FollowLinks'
установлено на 'off'
. Команда не следует по библиотечным ссылкам в подсистему и возвращает только подсистему на верхнем уровне.
open_system('myModel') find_system(bdroot,'LookUnderMasks','on','FollowLinks', 'off')
ans = 'myModel' 'myModel/Subsystem'
Использовать find_system
с 'FollowLinks'
установлено на 'on'
. find_system
обновляет библиотечные ссылки и возвращает блок в подсистеме.
find_system(bdroot,'LookUnderMasks','on','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain Updating Link: myModel/Subsystem/Gain ans = 'myModel' 'myModel/Subsystem' 'myModel/Subsystem/Gain'
Предоставьте систему, чтобы find_system
как указатель. Поиск параметров диалогового окна блока со значением 0
. Если вы совершаете несколько вызовов в get_param
для того же блока использование указателя на блок более эффективно, чем указание полного пути к блоку в качестве вектора символов.
load_system('vdp'); sys = get_param('vdp','Handle'); find_system(sys,'BlockDialogParams','0')
ans = 8×1
3.0046
4.0046
8.0046
13.0046
14.0046
14.0046
15.0046
15.0046
System
- Система поискаСистема для поиска, заданная как полное имя системного пути, массив ячеек с именами системных путей, указатель или вектор указателей.
Пример: 'MyModel/Subsystem1'
Пример: {'vdp','ex_sldemo_clutch'}
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'SearchDepth','0','LookUnderMasks','none','BlockType','Goto'
поиск в загруженных системах, исключая маскированные подсистемы, блоков Гото.Когда вы используете find_system
функция, Name,Value
аргументы в виде пар могут включать ограничения поиска и пары имя и значение параметра. Можно задать ограничения поиска в любом порядке, но они должны предшествовать парам имя и значение параметра.
Список параметров блоков см. в разделе «Специфичные для блоков параметры».
'BlockDialogParams'
- Опция поиска параметров диалогового окна блока для заданного значенияОпция поиска параметров диалогового окна блока для заданного значения, заданная как разделенная разделенными запятой парами, состоящая из 'BlockDialogParams'
и вектор символов или строковый скаляр. Эта пара должна следовать другим парам ограничений поиска.
'CaseSensitive'
- Опция для рассмотрения случая при совпадении'on'
(по умолчанию) | 'off'
Опция для рассмотрения случая при совпадении, заданная как разделенная разделенными запятой парами, состоящая из 'CaseSensitive'
и 'on'
для чувствительного к регистру поиска или 'off'
.
'FindAll'
- Опция включения линий, портов и аннотаций в системы'off'
(по умолчанию) | 'on'
Опция включения в поиск линий, портов и аннотаций в системах, заданная как разделенная разделенными запятой парами, состоящая из 'FindAll'
и 'on'
или 'off'
.Если для этой опции задано значение 'on'
, find_system
возвращает вектор указателей независимо от того, как вы задаете System
аргумент.
'FirstResultOnly'
- Опция возврата только первого результата'off'
(по умолчанию) | 'on'
Опция, чтобы вернуть только первый результат и затем остановить поиск, заданная как разделенная разделенными запятой парами, состоящая из 'FirstResultOnly'
и 'on'
или 'off'
.
'LookInsideSubsystemReference'
- Опция для поиска в подсистеме-ссылке'on'
(по умолчанию) | 'off'
Опция, чтобы заглянуть внутрь подсистемы-ссылки в модели и перечислить дочерние блоки, заданные как разделенная разделенными запятой парами, состоящая из 'LookInsideSubsystemReference'
и 'on'
или 'off'
.
'FollowLinks'
- Опция перехода по ссылкам в блоки библиотек'off'
(по умолчанию) | 'on'
Опция перехода по ссылкам на библиотечные блоки, заданная как разделенная запятой пара, состоящая из 'FollowLinks'
и 'on'
или 'off'
. Если вы не задаете систему для поиска, find_system
включает загруженные библиотеки в результаты, заданные пользователем 'FollowLinks'
на 'on'
или 'off'
. Можно использовать 'FollowLinks'
с 'LookUnderMasks'
для обновления библиотечных ссылок в подсистемах. См. раздел «Обновление библиотечных ссылок в подсистеме».
'IncludeCommented'
- Опция включения комментируемых блоков'off'
(по умолчанию) | 'on'
Опция включения комментируемых блоков в поиск, заданная как разделенная разделенными запятой парами, состоящая из 'IncludeCommented'
и 'on'
или 'off'
.
'LoadFullyIfNeeded'
- Опция загрузки любых частично загруженных моделей'on'
(по умолчанию) | 'off'
Опция для загрузки любых частично загруженных моделей, заданная как разделенная разделенными запятой парами 'LoadFullyIfNeeded'
и 'on'
для загрузки моделей или 'off'
чтобы отключить загрузку. Используйте эту опцию, для примера, чтобы предотвратить предупреждения загрузки.
'LookUnderMasks'
- Опции для поиска в масках'graphical'
(по умолчанию) | 'none'
| 'functional'
| 'all'
| 'on'
| 'off'
Опции для поиска в масках, заданные как разделенная разделенными запятой парами, состоящая из 'LookUnderMasks'
и один из следующих опций:
'graphical'
- Поиск включает маскированные подсистемы, которые не имеют рабочих областей и диалоговых окон.
'none'
- Поиск пропускает маскированные подсистемы.
'functional'
- Поиск включает маскированные подсистемы, которые не имеют диалоговых окон.
'all'
- Поиск включает все маскированные подсистемы.
'on'
- Поиск включает все маскированные подсистемы.
'off'
- Поиск пропускает маскированную подсистему.
'RegExp'
- Опция для обработки выражений поиска как регулярных выражений'off'
(по умолчанию) | 'on'
Опция для обработки выражений поиска как регулярных выражений, заданных как разделенная разделенными запятой парами, состоящая из 'RegExp'
и 'on'
для обработки выражений поиска как регулярных выражений или 'off'
. Чтобы узнать больше о MATLAB® регулярные выражения, см. Регулярные выражения.
'SearchDepth'
- Опция ограничения глубины поискаОпция ограничения глубины поиска заданным уровнем, заданная как разделенная разделенными запятой парами, состоящая из 'SearchDepth'
и положительный целочисленный вектор символов или строковый скаляр. Для примера задайте '0'
для поиска только загруженных систем, '1'
для блоков и подсистем системы верхнего уровня, '2'
для системы верхнего уровня и ее дочерних элементов и т.д. По умолчанию выполняется поиск по всем уровням.
'Variants'
- Опции для поиска вариантов'ActiveVariants'
(по умолчанию) | 'AllVariants'
| 'ActivePlusCodeVariants'
Опции для поиска вариантов, заданные как разделенная разделенными запятой парами, состоящая из 'Variants'
и один из следующих опций:
'ActiveVariants'
- Поиск только активного варианта выбора в Variant Subsystem.
'AllVariants'
- Поиск всех вариантов в Variant Subsystem.
'ActivePlusCodeVariants'
- Поиск всех вариантов вариантов в Variant Subsystem, которые активны в симуляции и являются частью сгенерированного кода.
Примечание
Это ограничение поиска применяется только к Variant Subsystem блокам, для которых установлено Variant control mode expression
или label
. Используйте find_system
функция со MatchFilter
опция для работы со всеми типами вариантов блоков.
'MatchFilter'
- Указатель на функцию, чтобы соответствовать элементамУказатель на функцию, соответствующий элементам поиска, таким как блоки, система, линии, порты и аннотации. Использование MatchFilter
чтобы определить, должны ли элементы быть включены или пропущены в поиск.
Именованная функция должна быть определена в программном файле MATLAB. Функция принимает указатель на элемент как вход и возвращает два выхода.
function [match, prune] = func(element)
Область входа element
- указатель на обрабатываемый блок.
Первый выход, match
, является логическим значением. Если false
поиск пропускает элемент.
Второй выход, prune
, является необязательным логическим значением, которое применяется только тогда, когда element
является подсистемой. Значение по умолчанию false
. Если для этого значения задано значение true
вся подсистема опущена из поиска.
Пример: Используйте MatchFilter
чтобы найти все блоки, не Inport и Outport в модели, используя свою собственную определенную функцию filter, nonInOutBlocks
:
function match = nonInOutBlocks(handle) match = true; if strcmp(get_param(handle, 'Type'), 'block') blockType = get_param(handle, 'BlockType'); if strcmp(blockType, 'Inport') || ... strcmp(blockType, 'Outport') match = false; end end end
load_system('vdp'); blks = find_system('vdp', 'MatchFilter', @nonInOutBlocks)
Варианты: 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='sldemo_variant_subsystems'; load_system(model); assignin('base','VSS_MODE',2); set_param(model, 'SimulationCommand', 'update'); activeBlks = find_system(model, 'MatchFilter', @Simulink.match.activeVariants);
Пример: Используйте Simulink.match.codeCompileVariants
опция для поиска вариантов, являющихся частью сгенерированного кода C:
addpath(fullfile(matlabroot,'examples','simulink_variants','main')); load_system('sldemo_variant_subsystems'); assignin('base','VSS_MODE',2); sldemo_variant_subsystems([], [], [], 'compileForRTW'); activeBlks= find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.codeCompileVariants); sldemo_variant_subsystems([], [], [], 'term');
Objects
- Соответствие объектовНайдены соответствующие объекты, возвращенные как:
Массив ячеек с именами путей, если вы задали System
как имя пути или массив ячеек с именами путей, или если вы не задали систему
Вектор указателей, если вы задали System
как указатель или вектор указателей
Variants
будет удаленоПредупреждает, начиная с R2021a
The Variants
опция будет удаляема из find_system
в будущем релизе. Скрипты, которые используют Variants
опция продолжает работать с предупреждением.
Чтобы найти блоки вариантов в модели, которые активны во время симуляции или генерации кода, скомпилируйте модель и используйте find_system
функция со MatchFilter
опция.
find_system
с Variants
и MatchFilter
опции в модели с вариантными блокамиПоведение изменено в R2021a
Варианты: Использование find_system
функция без Variants
опция по умолчанию включает только активный вариант в поиске.
Рассмотрим модель с Variant Subsystem, которая имеет два варианта выбора, Linear Controller
и Non-Linear Controller
.
Эта команда возвращает только активные блоки Add в модели.
add_blocks=find_system('sldemo_variant_subsystems/Controller',... 'BlockType','Sum')
add_blocks = 1×1 cell array {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add'}
MatchFilter: Использование find_system
функция со MatchFilter
опция применяет фильтры для активных и неактивных вариантов по умолчанию.
Рассмотрим модель с Variant Subsystem, которая имеет два варианта выбора, Linear Controller
и Non-Linear Controller
. Область функции filter findAddBlocks
находит все блоки Add в модели.
function match = findAddBlocks(handle) match = strcmp(get_param(handle, 'Type'), 'block') &&... strcmp(get_param(handle, 'BlockType'), 'Sum'); end
Эта команда возвращает как активные, так и неактивные блоки Add в модели.
add_blocks=find_system('sldemo_variant_subsystems','MatchFilter',... @findAddBlocks)
add_blocks = 2×1 cell array {'sldemo_variant_subsystems/Controller/Linear Controller/Add' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add'}
find_system
не поддерживает использование MatchFilter
наряду со Variants
опция.
Эта команда приводит к ошибке:
find_system(bdroot,'MatchFilter',@Simulink.match.activeVariants,... 'Variants','ActiveVariants');
find_mdlrefs
| get_param
| getSimulinkBlockHandle
| Model Explorer | set_param
| Редактор Simulink | Simulink.allBlockDiagrams
| Simulink.findBlocks
| Simulink.findBlocksOfType
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.