find_system
Find systems, blocks, lines, ports, and annotations
Syntax
Description
returns loaded systems and the objects in those systems that meet the criteria
specified by one or more Objects
= find_system(Name,Value
)Name,Value
pair arguments. You can use
this syntax to specify search constraints and to search for specific parameter
values. Specify the search constraints before the parameter and value pairs.
returns the objects in the specified system that meet the specified criteria.Objects
= find_system(System
,Name,Value
)
Examples
Find Loaded Systems and Their Blocks
Return the names of all loaded systems and their blocks.
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' }
Returns loaded systems and libraries, including vdp
.
Find Specific System and Its Blocks
Return vdp
system and its blocks.
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' }
Return Names of Loaded Models, Subsystems, and Libraries
Return the names of the loaded models, subsystems, and libraries. A subsystem name is returned only if the subsystem can be loaded independently.
load_system('vdp'); find_system('type','block_diagram')
ans = 1x1 cell array
{'vdp'}
Search Children of Subsystem
Return the names of all Goto blocks that are children of the Unlocked subsystem in the ex_sldemo_clutch
system.
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'}
Copyright 2020 The MathWorks, Inc.
Search Using Multiple Criteria
Search in the vdp
system and return the names of all Gain blocks whose Gain value is set to 1
.
load_system('vdp'); find_system('vdp','BlockType','Gain','Gain','1')
ans = 1x1 cell array
{'vdp/Mu'}
Return Lines and Annotations as Handles
Get the handles of all lines and annotations in the vdp
system. With 'FindAll'
, the function returns handles regardless of how you specify the system to search.
load_system('vdp'); L = find_system('vdp','FindAll','on','type','line')
L = 19×1
417.0028
416.0027
415.0027
414.0031
413.0032
412.0029
411.0032
31.0027
30.0029
29.0031
⋮
A = find_system('vdp','FindAll','on','type','annotation')
A = 2×1
419.0024
418.0033
Search for Specific Block Parameter Value
Find any block dialog box parameters with a value of
0
in the vdp
and
ex_sldemo_clutch
systems.
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)' } . . .
Search Using Regular Expressions
Find all blocks in the top level of the currently loaded systems with a block dialog parameter value that starts with 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'}
Regular Expression Search for Partial Match
When you search using regular expressions, you can specify a part of the character vector you want to match to return all objects that contain that character vector. Find all the inport and outport blocks in the ex_sldemo_clutch
model.
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' }
⋮
Update Library Links in a Subsystem
In this example, myModel
contains a single
subsystem, which is a library link. After the model was last opened, a
Gain block was added to the corresponding subsystem in the
library.
Open the model. Use find_system
with
'FollowLinks'
set to 'off'
. The
command does not follow the library links into the subsystem and returns
only the subsystem at the top level.
open_system('myModel') find_system(bdroot,'LookUnderMasks','on','FollowLinks', 'off')
ans = 'myModel' 'myModel/Subsystem'
Use find_system
with 'FollowLinks'
set to 'on'
. find_system
updates the
library links and returns the block in the subsystem.
find_system(bdroot,'LookUnderMasks','on','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain Updating Link: myModel/Subsystem/Gain ans = 'myModel' 'myModel/Subsystem' 'myModel/Subsystem/Gain'
Return Values as Handles
Provide the system to find_system
as a handle. Search for block dialog box parameters with a value of 0
. If you make multiple calls to get_param
for the same block, then using the block handle is more efficient than specifying the full block path as a character vector.
load_system('vdp'); sys = get_param('vdp','Handle'); find_system(sys,'BlockDialogParams','0')
ans = 8×1
3.0028
4.0028
10.0028
15.0028
16.0029
16.0029
17.0029
17.0029
Input Arguments
System
— System to search
path name | cell array of path names | handle | vector of handles
System to search, specified as the full system path name, a cell array of system path names, a handle, or a vector of handles.
Example: 'MyModel/Subsystem1'
Example: {'vdp','ex_sldemo_clutch'}
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: 'SearchDepth','0','LookUnderMasks','none','BlockType','Goto'
searches in loaded systems, excluding masked subsystems, for Goto
blocks.
When you use the find_system
function,
Name,Value
pair arguments can include search constraints and
parameter name and value pairs. You can specify search constraints in any order, but
they must precede the parameter name and value pairs.
See Block-Specific Parameters for the list of block parameters.
BlockDialogParams
— Option to search block dialog box parameters for the specified value
character vector | string scalar
Option to search block dialog box parameters for the specified value,
specified as the comma-separated pair consisting of
'BlockDialogParams'
and a character vector or
string scalar. This pair must follow the other search constraint
pairs.
CaseSensitive
— Option to consider case when matching
'on'
(default) | 'off'
Option to consider case when matching, specified as the
comma-separated pair consisting of 'CaseSensitive'
and 'on'
for case-sensitive searching or
'off'
.
FindAll
— Option to include lines, ports, and annotations within systems
'off'
(default) | 'on'
Option to include lines, ports, and annotations in systems in the
search, specified as the comma-separated pair consisting of
'FindAll'
and 'on'
or
'off'
.When this option is set to
'on'
, find_system
returns a
vector of handles regardless of how you specify the
System
argument .
FirstResultOnly
— Option to return only the first result
'off'
(default) | 'on'
Option to return only the first result and then stop the search,
specified as the comma-separated pair consisting of
'FirstResultOnly'
and 'on'
or
'off'
.
LookInsideSubsystemReference
— Option to look inside a referenced subsystem
'on'
(default) | 'off'
Option to look inside a referenced subsystem in a model and list child
blocks specified as the comma-separated pair consisting of
'LookInsideSubsystemReference'
and
'on'
or 'off'
.
FollowLinks
— Option to follow links into library blocks
'off'
(default) | 'on'
Option to follow links into library blocks, specified as the
comma-separated pair consisting of 'FollowLinks'
and
'on'
or 'off'
. If you do not
specify a system to search, find_system
includes
loaded libraries in the results, whether you set
'FollowLinks'
to 'on'
or
'off'
. You can use
'FollowLinks'
with
'LookUnderMasks'
to update library links in
subsystems. See Update Library Links in a Subsystem.
IncludeCommented
— Option to include commented blocks
'off'
(default) | 'on'
Option to include commented blocks in the search, specified as the
comma-separated pair consisting of 'IncludeCommented'
and 'on'
or 'off'
.
LoadFullyIfNeeded
— Option to load any partially loaded models
'on'
(default) | 'off'
Option to load any partially loaded models, specified as the
comma-separated pair of 'LoadFullyIfNeeded'
and
'on'
to load models or 'off'
to disable loading. Use this option, for example, to prevent load
warnings.
LookUnderMasks
— Options for searching under masks
'graphical'
(default) | 'none'
| 'functional'
| 'all'
| 'on'
| 'off'
Options for searching under masks, specified as the comma-separated
pair consisting of 'LookUnderMasks'
and one of these options:
'graphical'
— Search includes masked subsystems that have no workspaces and no dialogs.'none'
— Search skips masked subsystems.'functional'
— Search includes masked subsystems that do not have dialogs.'all'
— Search includes all masked subsystems.'on'
— Search includes all masked subsystems.'off'
— Search skips masked subsystem.
RegExp
— Option to treat search expressions as regular expressions
'off'
(default) | 'on'
Option to treat search expressions as regular expressions specified as
the comma-separated pair consisting of 'RegExp'
and
'on'
to treat search expressions as regular
expressions or 'off'
. To learn more about MATLAB® regular expressions, see Regular Expressions.
SearchDepth
— Option to restrict the search depth
positive integer character vector or string scalar
Option to restrict the search depth to the specified level, specified
as the comma-separated pair consisting of
'SearchDepth'
and a positive integer character
vector or string scalar. For example, specify '0'
to
search loaded systems only, '1'
for blocks and
subsystems of the top-level system, '2'
for the
top-level system and its children, etc. The default is to search all
levels.
Variants
— Options for searching variants
'ActiveVariants'
(default) | 'AllVariants'
| 'ActivePlusCodeVariants'
Note
The Variants
argument will be removed. Use
MatchFilter
instead. For more information,
see Compatibility Considerations.
Options for searching variants, specified as the comma-separated pair
consisting of 'Variants'
and one of these options:
'ActiveVariants'
— Search only the active variant choice in the Variant Subsystem.'AllVariants'
— Search all variant choices in the Variant Subsystem.'ActivePlusCodeVariants'
— Search all variant choices in the Variant Subsystem that are active in simulation and is part of the generated code.
This search constraint applies only to Variant
Subsystem blocks that have the Variant control
mode set to expression
or
label
. Use the find_system
function with the MatchFilter
option to operate on
all types of variant blocks.
MatchFilter
— Function handle to match elements
function handle
Function handle to match elements in a search, such as blocks, system,
lines, ports, and annotations. Use MatchFilter
to
determine whether elements should be included or skipped in a
search.
The named function must be defined within a MATLAB program file. The function takes the handle of the element as input and returns two outputs.
function [match, prune] = func(element)
The input
element
is the handle of the block being processed.The first output,
match
, is a logical value. Iffalse
, search skips the element.The second output,
prune
, is an optional logical value that only applies whenelement
is a subsystem. The default value isfalse
. If this value is set totrue
, the entire subsystem is omitted from the search.
Example: Use MatchFilter
to find all non
Inport and Outport blocks in a model
using your own defined filter function,
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)
Variants: Simulink provides these built-in match filter functions to find variant blocks that are active in simulation or part of the generated code.
Simulink.match.activeVariants
— Filter function to find blocks that are active in simulation after model compilation.Simulink.match.codeCompileVariants
— Filter function to find blocks that are part of generated code after model compilation.Simulink.match.allVariants
— Filter function to find all blocks irrespective of whether the block is active or inactive due to variants.
Note
To get correct results, you must compile the
model before using
Simulink.match.activeVariants
and
Simulink.match.codeCompileVariants
filters.
If the model is not compiled, these filters return all blocks in the
model.
Example: Use the Simulink.match.activeVariants
filter to find active variants in a model.
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);
Example: Use the Simulink.match.codeCompileVariants
filter to find variant choices that are part of the generated C
code.
load_system('sldemo_variant_subsystems'); assignin('base','VSS_MODE',2); sldemo_variant_subsystems([], [], [], 'compileForCodegen'); activeBlks= find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.codeCompileVariants); sldemo_variant_subsystems([], [], [], 'term');
Example: Use the Simulink.match.allVariants()
filter to find all blocks in a model.
find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.allVariants);
Output Arguments
Objects
— Matching objects
cell array of path names | vector of handles
Matching objects found, returned as:
A cell array of path names if you specified
System
as a path name or cell array of path names, or if you did not specify a systemA vector of handles if you specified
System
as a handle or vector of handles
Version History
Introduced before R2006aR2021a: Variants
argument will be removed
Warns starting in R2021a
The Variants
option will be removed from
find_system
in a future release. Scripts that use the
Variants
option continue to work with a warning.
To find variant blocks in a model that are active during simulation or code
generation, compile the model and use the find_system
function
with the MatchFilter
option.
R2021a: Default behavior has changed for find_system
with Variants
and MatchFilter
options in a
model with variant blocks
Behavior changed in R2021a
Variants
: Using thefind_system
function without theVariants
option includes only the active variant choice in the search by default.Consider a model with a Variant Subsystem that has two variant choices,
Linear Controller
andNon-Linear Controller
.This command returns only the active Add blocks in the model.
add_blocks=find_system('sldemo_variant_subsystems/Controller',... 'BlockType','Sum')
add_blocks = 1×1 cell array {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add'}
MatchFilter
: Using thefind_system
function with theMatchFilter
option applies the filters on the active and inactive variant choices by default.Consider a model with a Variant Subsystem that has two variant choices,
Linear Controller
andNon-Linear Controller
. The filter functionfindAddBlocks
finds all the Add blocks in the model.function match = findAddBlocks(handle) match = strcmp(get_param(handle, 'Type'), 'block') &&... strcmp(get_param(handle, 'BlockType'), 'Sum'); end
This command returns both the active and inactive Add blocks in the model.
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
does not support the use ofMatchFilter
along with theVariants
option.This command produces an error:
find_system(bdroot,'MatchFilter',@Simulink.match.activeVariants,... 'Variants','ActiveVariants');
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)