Main Content

find_mdlrefs

Find referenced models and Model blocks in model hierarchy

Description

example

[models,blocks] = find_mdlrefs(system)finds all referenced models andModelblocks in the model hierarchy below the specified system. Thefind_mdlrefsfunction temporarily loads the models.

example

[models,blocks] = find_mdlrefs(system,Name,Value)provides additional search options using one or more name-value pairs. For example, to keep the models loaded instead of temporarily loading them, setKeepModelsLoadedtotrue.

Examples

collapse all

Find referenced models and Model blocks for all models referenced by the specified model.

load_system('sldemo_mdlref_basic'); [myModels,myModelBlks] = find_mdlrefs('sldemo_mdlref_basic')
myModels =2x1 cell{'sldemo_mdlref_counter'} {'sldemo_mdlref_basic' }
myModelBlks =3 x1细胞{'sldemo_mdlref_basic/CounterA'} {'sldemo_mdlref_basic/CounterB'} {'sldemo_mdlref_basic/CounterC'}

By default, thefind_mdlrefsfunction loads and then closes the models that were not already loaded. To identify what models are loaded, use thefind_systemfunction.

find_mdlrefs('sldemo_mdlref_depgraph'); find_system('type','block_diagram')
ans = 0x1 empty cell array

To find and load all models in the model hierarchy, setKeepModelsLoadedtotrue.

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' }

The top model and all referenced models remain loaded. If you opensldemo_mdlref_depgraph, you can navigate the model hierarchy without waiting for the referenced models to load as you open them.

Input Arguments

collapse all

System name, block path, or handle, specified as a character vector, string scalar, or numeric scalar.

The system must be an SLX file, MDL file,Modelblock, orSubsystemblock.

If you specify a file name, do not include the file extension.

Data Types:double|char|string

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValueis 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 encloseNamein quotes.

Example:refModels = find_mdlrefs(topmodel,'KeepModelsLoaded',true,'ReturnTopModelAsLastElement',false)

Option to keep models loaded, specified as the comma-separated pair consisting of'KeepModelsLoaded'and a numeric or logical1(true) or0(false).

By default the function loads and then closes the models that were not already loaded. To keep the models loaded, set this argument totrue. Keeping the models loaded can be useful if you plan on interacting with the models after finding them.

Data Types:logical

Levels to search, specified as the comma-separated pair consisting of'AllLevels'and a numeric or logical1(true) or0(false).

  • true— Search allModelblocks in the model hierarchy of the specifiedsystem.

  • false— Search only the top-level system.

Data Types:logical

选项包括保护模型s in the search results, specified as the comma-separated pair consisting of'IncludeProtectedModels'and a numeric or logical1(true) or0(false).

This setting only affects the returned list of referenced models; It does not affect the returned list ofModelblocks.

Data Types:logical

Option to include commented blocks in the search results, specified as the comma-separated pair consisting of'IncludeCommented'and a numeric or logical1(true) or0(false).

Data Types:logical

Option to match case when searching, specified astruefor case-sensitive search orfalsefor case-insensitive search.

Data Types:logical

Option for the search to follow library links, specified astrueorfalse. Iftrue, search follows links into library blocks.

Data Types:logical

Options to search masked blocks, specified as:

  • 'all'— Search in all masked blocks.

  • 'none'— Prevent searching in masked systems.

  • 'functional'— Include masked subsystems that do not have dialogs.

  • 'graphical'— Include masked subsystems that do not have workspaces or dialogs.

Data Types:char|string

Function handle to match elements in a search, such as blocks, system, lines, ports, and annotations. UseMatchFilterto determine whether elements should be included or skipped in the 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 inputelementis 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 whenelementis a subsystem. The default value isfalse. If this value is set totrue, the entire subsystem is omitted from the search.

For example, useMatchFilterto find allModelblocks in a model for which theInitFcncallback is defined using the filter function,initFcnMdlBlocks:

functionmatch = 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)

Variants:To find active variants or code compile variant blocks, compile the model and apply the appropriate match filter function that Simulink®provides.

  • Simulink.match.activeVariants— Match blocks that are active in simulation after model compilation.

  • Simulink.match.codeCompileVariants— Match blocks that are part of generated code after model compilation.

Note

To get correct results, you mustcompile the modelbefore usingSimulink.match.activeVariantsandSimulink.match.codeCompileVariantsfilters. If the model is not compiled, these filters return all blocks in the model.

For example, use theSimulink.match.activeVariantsoption to find active variants in a model.

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);

For example, use theSimulink.match.codeCompileVariantsoption to find variant choices that are part of the generated C code.

addpath(fullfile(matlabroot,'examples','simulink_variants','main')); load_system('slexVariantMdlRefCondProp'); assignin('base','VSS_MODE',2); slexVariantMdlRefCondProp([],[],[],'compileForCodegen'); [models,blocks] = find_mdlrefs('slexVariantMdlRefCondProp',...'MatchFilter',@Simulink.match.codeCompileVariants); slexVariantMdlRefCondProp([],[],[],'term');

Note

TheVariantsargument will be removed. UseMatchFilterinstead. For more information, seeCompatibility Considerations.

Option to include variant models in the search results, specified as the comma-separated pair consisting of'Variants'and'ActivePlusCodeVariants','ActiveVariants', or'AllVariants'.

  • 'ActivePlusCodeVariants'— Include all variant models in theVariant Subsystemthat are active in simulation and is part of the generated code.

  • 'ActiveVariants'— Include the active variant models in theVariant Subsystemblock.

  • 'AllVariants'— Include all variant models in theVariant Subsystemblock.

This search constraint applies only toVariant Subsystemblocks that have theVariant control modeset toexpressionorlabel. Use thefind_mdlrefsfunction with theMatchFilteroption to operate on all types of variant blocks.

Data Types:char|string

Option to include the specified system in the search results, specified as the comma-separated pair consisting of'ReturnTopModelAsLastElement'and a numeric or logical1(true) or0(false).

By default, the last element in the returned list of referenced models is the name of the model, library, or subsystem file that you specified with thesystemargument. If you specify a block, the last element is the name of the file that contains it.

Data Types:logical

Output Arguments

collapse all

Names of models, returned as a cell array of character vectors.

By default, the last element is the name of the model, library, or subsystem file that you specified with thesystemargument. If you specify a block, the last element is the model, library, or subsystem file that contains it.

Names ofModel块,作为单元阵列的性格vect返回ors.

Version History

Introduced before R2006a

expand all

Warns starting in R2021a

Behavior changed in R2021a

Not recommended starting in R2020b