在模型层次结构中查找引用的模型和模型块
查找指定模型引用的所有模型的引用模型和模型块。
load_system (“sldemo_mdlref_basic”);[myModels, myModelBlks] = find_mdlrefs (“sldemo_mdlref_basic”)
myModels =2x1电池{' sldemo_mdlref_counter} {' sldemo_mdlref_basic '}
myModelBlks=3x1电池{' sldemo_mdlref_basic / CounterA '} {' sldemo_mdlref_basic / CounterB '} {' sldemo_mdlref_basic / CounterC '}
默认情况下find_mdlrefs
函数加载,然后关闭尚未加载的模型。要确定加载了什么模型,请使用find_system
函数。
查找\u mdlrefs(“sldemo\u mdlref\u depgraph”); 查找系统(“类型”,“block_diagram”)
ans=0x1空单元阵列
要查找并加载模型层次结构中的所有模型,请设置KeepModelsLoaded
到符合事实的
.
查找\u mdlrefs(“sldemo\u mdlref\u depgraph”,“KeepModelsLoaded”,true);查找系统(“类型”,“block_diagram”)
ans =7 x1细胞{'sldemo_mdlref_thermostat'} {' sldemo_mdlref_加热器'}{'sldemo_mdlref_F2C'} {'sldemo_mdlref_outdoor_temp'} {'sldemo_mdlref_house'} {'sldemo_mdlref_heat2cost'} {'sldemo_mdlref_depgraph'}
顶部模型和所有引用模型仍处于加载状态。如果你打开sldemo_mdlref_depgraph
,您可以导航模型层次结构,而不必在打开引用的模型时等待它们加载。
系统
- - - - - -系统名称、块路径或句柄作为字符向量、字符串标量或数字标量指定的系统名称、块路径或句柄。
系统必须是SLX文件,MDL文件,模型块,或子系统块。
如果指定文件名,请不要包含文件扩展名。
数据类型:双
|字符
|一串
指定可选的逗号分隔的对名称,值
参数。名称
参数名和价值
是对应的值。名称
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
refModels = find_mdlrefs (topmodel, KeepModelsLoaded,真的,ReturnTopModelAsLastElement,假)
KeepModelsLoaded
- - - - - -选项保持模型加载假
或0
(默认)|符合事实的
或1
选项以保持模型加载,指定为逗号分隔的对,由“KeepModelsLoaded”
和数字或逻辑1
(符合事实的
)或0
(假
).
默认情况下,函数加载并关闭尚未加载的模型。若要保持模型已加载,请将此参数设置为符合事实的
。如果您计划在找到模型后与模型进行交互,则保持加载模型会很有用。
数据类型:逻辑
各级
- - - - - -要搜索的级别符合事实的
或1
(默认)|假
或0
IncludeProtectedModels
- - - - - -包含受保护模型的选项假
或0
(默认)|符合事实的
或1
选项在搜索结果中包括受保护的模型,指定为逗号分隔的对,由“IncludeProtectedModels”
和数字或逻辑1
(符合事实的
)或0
(假
).
此设置仅影响引用模型的返回列表;不影响返回的列表模型阻碍。
数据类型:逻辑
IncludeCommented
- - - - - -包含注释块的选项假
或0
(默认)|符合事实的
或1
选项在搜索结果中包含注释块,指定为逗号分隔对,由“IncludeCommented”
和数字或逻辑1
(符合事实的
)或0
(假
).
数据类型:逻辑
CaseSensitive
- - - - - -搜索时匹配大小写的选项符合事实的
(默认)|假
选项匹配搜索时的大小写,指定为符合事实的
用于区分大小写的搜索或假
不区分大小写的搜索。
数据类型:逻辑
FollowLinks
- - - - - -用于搜索以跟踪库链接的选项假
(默认)|符合事实的
选项用于按照库链接进行搜索,指定为符合事实的
或假
如果符合事实的
,搜索跟随链接进入图书馆块。
数据类型:逻辑
隐形面具
- - - - - -搜索屏蔽块的选项“所有”
(默认)|“没有”
|“功能”
|“图形”
用于搜索遮罩块的选项,指定为:
“所有”
-搜索所有遮罩块。
“没有”
-防止在屏蔽系统中进行搜索。
“功能”
-包括没有对话框的屏蔽子系统。
“图形”
-包括没有工作区或对话框的屏蔽子系统。
数据类型:字符
|一串
MatchFilter
- - - - - -决定在搜索中是包含元素还是跳过元素的函数句柄用于匹配搜索中的元素(如块、系统、线、端口和注释)的函数句柄。使用MatchFilter
以确定搜索中是否应包括或跳过元素。
命名函数必须在MATLAB中定义®程序文件。该函数将元素的句柄作为输入,并返回两个输出。
作用[match,prune]=func(元素)
输入要素
正在处理的块的句柄。
第一个输出,匹配
,是一个逻辑值。如果假
,搜索将跳过该元素。
第二个输出,修剪
,是一个可选逻辑值,仅在要素
是一个子系统。默认值为假
如果this value is set to符合事实的
,则整个子系统将从搜索中忽略。
例如,使用MatchFilter
找到所有模型对象在模型中的块InitFcn
Callback是使用filter函数定义的,initFcnMdlBlocks
:
作用match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle,))“InitFcn”));结束
目录(fullfile (matlabroot,“例子”,“万博1manbetxsimulink_variants”,“主要的”));模型=“slexVariantMdlRefCondProp”;load_system(模型);(模型、块)= find_mdlrefs(模型,“MatchFilter”,@initFcnMdlBlocks)
变体:为了找到活动变量或代码编译变量块,编译模型并应用Simulink的适当匹配过滤函数万博1manbetx®提供了。
万博1manbetxSimulink.match.activeVariants
—匹配在模型编译后的模拟中活跃的块。
万博1manbetxSimulink.match.codeCompileVariants
-匹配模型编译后生成的代码的一部分。
例如,使用万博1manbetxSimulink.match.activeVariants
用于在模型中查找活动变体的选项。
目录(fullfile (matlabroot,“例子”,“万博1manbetxsimulink_variants”,“主要的”));模型=“slexVariantMdlRefCondProp”;加载系统(模型);设置参数(模型、,“模拟命令”,“更新”); [模型,块]=查找\u mdlrefs(模型,“MatchFilter”,@万博1manbetxSimulink.match.activeVariants);
例如,使用万博1manbetxSimulink.match.codeCompileVariants
选项查找生成的C代码中的变体选项。
目录(fullfile (matlabroot,“例子”,“万博1manbetxsimulink_variants”,“主要的”)); 加载系统(“slexVariantMdlRefCondProp”); 指派(“基地”,“VSS_模式”2);slexVariantMdlRefCondProp ([],[],[],“compileForCodegen”);(模型、块)= find_mdlrefs (“slexVariantMdlRefCondProp”,...“MatchFilter”, 万博1manbetx@Simulink.match.codeCompileVariants);slexVariantMdlRefCondProp ([],[],[],“术语”);
变体
- - - - - -选项包括变体模型“ActivePlusCodeVariants”
(默认)|“ActiveVariants”
|“所有变体”
请注意
的变体
参数将被删除。请使用MatchFilter
代替。有关更多信息,请参见兼容性考虑.
选项以在搜索结果中包括变量模型,指定为逗号分隔对,由“变异”
和“ActivePlusCodeVariants”
,“ActiveVariants”
或“所有变体”
.
“ActivePlusCodeVariants”
-包括所有的变型模型变型子系统在模拟中是活跃的,并且是生成代码的一部分。
“ActiveVariants”
-将激活的变型车型包括在变型子系统块。
“所有变体”
-包括所有的变型模型变型子系统块。
此搜索约束仅适用于变型子系统块具有变量控制方式设置为表示
或标签
.使用find_mdlrefs
函数与MatchFilter
用于在所有类型的可变块上操作的选项。
数据类型:字符
|一串
ReturnTopModelAsLastElement
- - - - - -包含指定系统的选项符合事实的
或1
(默认)|假
或0
选项在搜索结果中包含指定的系统,指定为逗号分隔对组成“ReturnTopModelAsLastElement”
和数字或逻辑1
(符合事实的
)或0
(假
).
默认情况下,返回的引用模型列表中的最后一个元素是使用指定的模型、库或子系统文件的名称系统
参数。如果指定块,则最后一个元素是包含该块的文件的名称。
数据类型:逻辑
变体
此参数将被删除从R2021a开始警告
的变体
选项将被删除find_mdlrefs
在未来的版本中。使用变体
选项继续工作与警告。
发现模型块在模拟或代码生成期间是活动的,编译模型并使用find_mdlrefs
函数与MatchFilter
选择。
find_mdlrefs
与变体
和MatchFilter
具有可变块的模型中的选项R2021a中的行为发生了变化
变体
:使用find_mdlrefs
作用没有的变体
选项只包括模型默认情况下,在搜索中的模拟或代码生成期间处于活动状态的块。
考虑一个模型变型具有两个变体选项的块,线性控制器
和Mdl_NonLinear_Controller
.
这个命令只返回活动的模型块在模型中。
[myModels, myModelBlks] = find_mdlrefs...(“sldemo\u变体\u子系统\u模型块”)
myModelBlks = 1×1 cell array {'sldemo_variant_subsystems_modelblocks/Controller/Mdl_NonLinear_Controller'}
MatchFilter
:使用find_mdlrefs
函数与MatchFilter
默认情况下,选项将过滤器应用于活动和非活动变量选项。
考虑一个模型变型具有两个变体选项的块,线性控制器
和Mdl_NonLinear_Controller
. 过滤函数initFcnMdlBlocks
找到所有模型块InitFcn
已设置回调。
作用match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle,))“InitFcn”));结束
这个命令返回激活的和非激活的模型块在模型中。
[myModels, myModelBlks] = find_mdlrefs (“sldemo\u变体\u子系统\u模型块”,...“MatchFilter”@initFcnMdlBlocks)
myModels = 3×1单元阵列{‘mdlref_linear_controller}{‘mdlref_nonlinear_controller}{‘sldemo_variant_subsystems_modelblocks} myModelBlks = 2×1单元阵列{' sldemo_variant_subsystems_modelblocks /控制器/ Mdl_Linear_Controller '} {' sldemo_variant_subsystems_modelblocks /控制器/ Mdl_NonLinear_Controller '}
find_mdlrefs
不支持的使用万博1manbetxMatchFilter
随着变体
选择。
这个命令会产生一个错误:
查找\u mdlrefs(bdroot,“MatchFilter”, 万博1manbetx@Simulink.match.activeVariants...“变异”,“ActiveVariants”);
find_mdlrefs
不鼓励不建议在R2020b中起动
的find_mdlrefs
函数提供两种方法来指定是否搜索模型层次结构的所有级别。这两种方法给出相同的结果,但只有名称-值对技术允许您指定其他选项。
不是指定是否以逻辑作为第二个参数搜索模型层次结构的所有级别,而是使用各级
名称-值对。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。