在模型层次结构中查找引用的模型和模型块
查找指定模型引用的所有模型的引用模型和模型块。
load_system (“sldemo_mdlref_basic”);[myModels,myModelBlks] = find_mdlrefs(“sldemo_mdlref_basic”)
myModels =2 x1细胞{'sldemo_mdlref_counter'} {'sldemo_mdlref_basic'}
myModelBlks =3 x1细胞{'sldemo_mdlref_basic/CounterA'} {'sldemo_mdlref_basic/CounterB'} {'sldemo_mdlref_basic/CounterC'}
默认情况下,find_mdlrefs
函数加载,然后关闭尚未加载的模型。要确定加载了哪些模型,请使用find_system
函数。
find_mdlrefs (“sldemo_mdlref_depgraph”);find_system (“类型”,“block_diagram”)
Ans = 0x1空单元格数组
要查找并加载模型层次结构中的所有模型,请设置KeepModelsLoaded
来真正的
.
find_mdlrefs (“sldemo_mdlref_depgraph”,“KeepModelsLoaded”,真正的);find_system (“类型”,“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,' keepmodelloaded ',true,'ReturnTopModelAsLastElement',false)
KeepModelsLoaded
- - - - - -选项保持模型加载假
或0
(默认)|真正的
或1
选项以保持模型加载,指定为逗号分隔的对,由“KeepModelsLoaded”
数字或逻辑1
(真正的
)或0
(假
).
默认情况下,该函数加载并关闭尚未加载的模型。要保持模型加载,将此参数设置为真正的
.如果您计划在找到模型后与它们进行交互,那么保持模型加载是有用的。
数据类型:逻辑
AllLevels
- - - - - -搜索级别真正的
或1
(默认)|假
或0
IncludeProtectedModels
- - - - - -选项,包括受保护的模型假
或0
(默认)|真正的
或1
选项,在搜索结果中包括受保护的模型,指定为逗号分隔的对,由“IncludeProtectedModels”
数字或逻辑1
(真正的
)或0
(假
).
此设置仅影响返回的引用模型列表;的返回列表不受影响模型块。
数据类型:逻辑
IncludeCommented
- - - - - -选项,包括注释块假
或0
(默认)|真正的
或1
选项,在搜索结果中包含注释块,指定为逗号分隔的对,由“IncludeCommented”
数字或逻辑1
(真正的
)或0
(假
).
数据类型:逻辑
CaseSensitive
- - - - - -搜索时匹配大小写的选项真正的
(默认)|假
选项,在搜索时匹配大小写,指定为真正的
区分大小写的搜索或假
用于不区分大小写的搜索。
数据类型:逻辑
FollowLinks
- - - - - -选项搜索遵循图书馆链接假
(默认)|真正的
选项,以搜索库链接,指定为真正的
或假
.如果真正的
,搜索会跟随链接进入库块。
数据类型:逻辑
LookUnderMasks
- - - - - -用于搜索屏蔽块的选项“所有”
(默认)|“没有”
|“功能”
|“图形”
搜索屏蔽块的选项,指定为:
“所有”
-搜索所有屏蔽块。
“没有”
—屏蔽系统中禁止搜索。
“功能”
—包括没有对话框的屏蔽子系统。
“图形”
—包括没有工作空间或对话框的屏蔽子系统。
数据类型:字符
|字符串
MatchFilter
- - - - - -函数句柄,用于确定在搜索中是包含元素还是跳过元素函数句柄,用于匹配搜索中的元素,例如块、系统、行、端口和注释。使用MatchFilter
以确定在搜索中是否应该包括或跳过元素。
命名函数必须在MATLAB中定义®程序文件。该函数接受元素的句柄作为输入,并返回两个输出。
函数[match, prune] = func(element)
输入元素
正在处理的块的句柄。
第一个输出,匹配
,为逻辑值。如果假
,搜索跳过元素。
第二个输出,修剪
,是一个可选的逻辑值,仅适用于元素
是一个子系统。默认值为假
.如果该值设置为真正的
时,整个子系统将从搜索中省略。
例如,使用MatchFilter
找到所有模型控件的模型中InitFcn
Callback是使用filter函数定义的,initFcnMdlBlocks
:
函数match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle,“InitFcn”));结束
目录(fullfile (matlabroot,“例子”,“金宝appsimulink_variants”,“主要”));模型=“slexVariantMdlRefCondProp”;load_system(模型);[models,blocks] = find_mdlrefs(model,“MatchFilter”@initFcnMdlBlocks)
变体:要查找活动变量或代码编译变量块,请编译模型并应用Simulink的适当匹配筛选函数金宝app®提供了。
金宝appSimulink.match.activeVariants
-匹配模型编译后在模拟中活动的块。
金宝appSimulink.match.codeCompileVariants
-匹配模型编译后生成的代码的一部分。
例如,使用金宝appSimulink.match.activeVariants
在模型中查找活动变量的选项。
目录(fullfile (matlabroot,“例子”,“金宝appsimulink_variants”,“主要”));模型=“slexVariantMdlRefCondProp”;load_system(模型);set_param(模型,“SimulationCommand”,“更新”);[models,blocks] = find_mdlrefs(model,“MatchFilter”, 金宝app@Simulink.match.activeVariants);
例如,使用金宝appSimulink.match.codeCompileVariants
选项来查找生成的C代码中的变体选项。
目录(fullfile (matlabroot,“例子”,“金宝appsimulink_variants”,“主要”));load_system (“slexVariantMdlRefCondProp”);assignin (“基地”,“VSS_MODE”2);slexVariantMdlRefCondProp ([],[],[],“compileForCodegen”);[models,blocks] = find_mdlrefs(“slexVariantMdlRefCondProp”,…“MatchFilter”, 金宝app@Simulink.match.codeCompileVariants);slexVariantMdlRefCondProp ([],[],[],“术语”);
变体
- - - - - -选项包括不同的模型“ActivePlusCodeVariants”
(默认)|“ActiveVariants”
|“AllVariants”
请注意
的变体
参数将被删除。使用MatchFilter
代替。有关更多信息,请参见兼容性的考虑.
选项,在搜索结果中包括不同的模型,指定为逗号分隔的对,由“变异”
和“ActivePlusCodeVariants”
,“ActiveVariants”
,或“AllVariants”
.
“ActivePlusCodeVariants”
-包括所有的变型模型不同的子系统在模拟中是活跃的,并且是生成代码的一部分。
“ActiveVariants”
-包括现役的变型模型不同的子系统块。
“AllVariants”
-包括所有的变型模型不同的子系统块。
此搜索限制仅适用于不同的子系统具有变型控制方式设置为表达式
或标签
.使用find_mdlrefs
函数与MatchFilter
选项操作的所有类型的变体块。
数据类型:字符
|字符串
ReturnTopModelAsLastElement
- - - - - -选项,包括指定的系统真正的
或1
(默认)|假
或0
选项,在搜索结果中包括指定的系统,指定为逗号分隔的对,由“ReturnTopModelAsLastElement”
数字或逻辑1
(真正的
)或0
(假
).
默认情况下,返回的引用模型列表中的最后一个元素是您使用系统
论点。如果指定一个块,最后一个元素是包含它的文件的名称。
数据类型:逻辑
变体
参数将被删除。R2021a开始警告
的变体
选项将从find_mdlrefs
在未来的版本中。使用变体
选项继续工作,有警告。
找到模型在模拟或代码生成期间活动的块,编译模型并使用find_mdlrefs
函数与MatchFilter
选择。
find_mdlrefs
与变体
和MatchFilter
具有不同块的模型中的选项R2021a的行为发生了变化
变体
:使用find_mdlrefs
函数没有的变体
选项仅包括模型在默认情况下,在搜索中的模拟或代码生成期间是活动的块。
考虑一个带有变体模型Block有两个不同的选项,Mdl_Linear_控制器
和Mdl_NonLinear_Controller
.
此命令只返回活动的模型模型中的块。
[myModels,myModelBlks] = find_mdlrefs…(“sldemo_variant_subsystems_modelblocks”)
myModels = 2×1单元格阵列{' mdlref_非线性控制器'}{'sldemo_variant_subsystems_modelblocks'} myModelBlks = 1×1单元格阵列{'sldemo_variant_subsystems_modelblocks/Controller/ mdl_非线性控制器'}
MatchFilter
:使用find_mdlrefs
函数与MatchFilter
选项在默认情况下对激活和非激活变量选项应用筛选器。
考虑一个带有变体模型Block有两个不同的选项,Mdl_Linear_控制器
和Mdl_NonLinear_Controller
.过滤函数initFcnMdlBlocks
找到所有模型块,其中InitFcn
Callback已设置。
函数match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle,“InitFcn”));结束
该命令同时返回活动和非活动模型模型中的块。
[myModels,myModelBlks] = find_mdlrefs(“sldemo_variant_subsystems_modelblocks”,…“MatchFilter”@initFcnMdlBlocks)
myModels = 3×1单元阵列{' mdlref_线性控制器'}{' mdlref_非线性控制器'}{'sldemo_variant_subsystems_modelblocks'} myModelBlks = 2×1单元阵列{'sldemo_variant_subsystems_modelblocks/控制器/ mdl_线性控制器'}{'sldemo_variant_subsystems_modelblocks/控制器/ mdl_非线性控制器'}
find_mdlrefs
不支持使用金宝appMatchFilter
伴随着变体
选择。
这个命令会产生一个错误:
find_mdlrefs (bdroot“MatchFilter”, 金宝app@Simulink.match.activeVariants…“变异”,“ActiveVariants”);
find_mdlrefs
不鼓励不建议从R2020b开始
的find_mdlrefs
函数提供了两种方法来指定是否搜索模型层次结构的所有级别。这两种技术都给出了相同的结果,但是只有名称-值对技术允许您指定其他选项。
而不是指定是否使用逻辑作为第二个参数搜索模型层次结构的所有级别,而是使用AllLevels
名称-值对。
海脂循环匹配函数对应求解MATLAB:
Esegui il commanmando inserendolo nella finestra di commanmando MATLAB。我的浏览器web不支持和MATLAB金宝app。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。