find_mdlrefs
在模型层次结构中查找引用的模型和模型块
描述
例子
在模型层次结构中查找引用模型
查找指定模型引用的所有模型的引用模型和模型块。
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/ counter '} {'sldemo_mdlref_basic/CounterB'} {'sldemo_mdlref_basic/ counter '}
在模型层次结构中查找并加载所有模型
默认情况下,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_heater'} {'sldemo_mdlref_F2C'} {'sldemo_mdlref_outdoor_temp'} {'sldemo_mdlref_house'} {'sldemo_mdlref_heat2cost'} {'sldemo_mdlref_depgraph'}
顶部模型和所有引用的模型保持加载状态。如果你打开sldemo_mdlref_depgraph
,您可以在模型层次结构中导航,而无需等待被引用的模型在打开时加载。
输入参数
系统
- - - - - -系统名、块路径或句柄
特征向量|字符串标量|数字标量
指定为字符向量、字符串标量或数字标量的系统名称、块路径或句柄。
系统必须是SLX文件、MDL文件、模型块,或子系统块。
如果指定了文件名,则不包括文件扩展名。
数据类型:双
|字符
|字符串
名称-值参数
指定可选的参数对为Name1 = Value1,…,以=家
,在那里名字
是参数名和吗价值
是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字
在报价。
例子: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(元素)
输入
元素
正在处理的块的句柄。第一个输出,
匹配
,是逻辑值。如果假
,则搜索跳过该元素。第二个输出,
修剪
,是一个可选的逻辑值,只适用于元素
是一个子系统。默认值为假
.如果将此值设置为真正的
,整个子系统从搜索中省略。
例如,使用MatchFilter
找到所有模型中的块InitFcn
Callback是用filter函数定义的,initFcnMdlBlocks
:
函数match = ~isempty(get_param(handle))“InitFcn”));结束
目录(fullfile (matlabroot,“例子”,“金宝appsimulink_variants”,“主要”));模型=“slexVariantMdlRefCondProp”;load_system(模型);[models,blocks] = find_mdlrefs(model, blocks)“MatchFilter”@initFcnMdlBlocks)
变体:要查找活动变体或代码编译变体块,编译模型并应用Simulink提供的适当匹配过滤函数金宝app®提供了。
金宝appSimulink.match.activeVariants
-匹配在模型编译后在模拟中活跃的块。金宝appSimulink.match.codeCompileVariants
-匹配块是模型编译后生成代码的一部分。
请注意
为了得到正确的结果,你必须编译模型使用前金宝appSimulink.match.activeVariants
和金宝appSimulink.match.codeCompileVariants
过滤器。如果没有编译模型,这些过滤器将返回模型中的所有块。
例如,使用金宝appSimulink.match.activeVariants
选项,以查找模型中的活动变体。
目录(fullfile (matlabroot,“例子”,“金宝appsimulink_variants”,“主要”));模型=“slexVariantMdlRefCondProp”;load_system(模型);set_param(模型,“SimulationCommand”,“更新”);[models,blocks] = find_mdlrefs(model, blocks)“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”
-包括所有的变种模型不同的子系统块。
此搜索约束仅适用于不同的子系统block有变型控制方式设置为表达式
或标签
.使用find_mdlrefs
函数MatchFilter
选择操作所有类型的变体块。
数据类型:字符
|字符串
ReturnTopModelAsLastElement
- - - - - -选项以包含指定的系统
真正的
或1
(默认)|假
或0
选项,以在搜索结果中包含指定的系统,指定为由“ReturnTopModelAsLastElement”
数字的或逻辑的1
(真正的
)或0
(假
).
默认情况下,返回的引用模型列表中的最后一个元素是模型、库或子系统文件的名称,您使用系统
论点。如果指定一个块,最后一个元素是包含该块的文件的名称。
数据类型:逻辑
输出参数
版本历史
R2006a之前引入R2021a:变体
参数将被移除
警告从R2021a开始
的变体
选项将从find_mdlrefs
在将来的版本中。的脚本。变体
选项继续工作并显示警告。
找到模型在模拟或代码生成期间活动的块,编译模型并使用find_mdlrefs
函数MatchFilter
选择。
R2021a:默认行为已更改为find_mdlrefs
与变体
和MatchFilter
带有变体块的模型中的选项
行为在R2021a中改变
变体
:使用find_mdlrefs
函数没有的变体
选项只包括模型默认情况下,在搜索中的模拟或代码生成期间活动的块。考虑一个带有变体模型Block有两个选项,
Mdl_Linear_控制器
和Mdl_NonLinear_Controller
.该命令只返回活动的模型模型中的块。
[myModels,myModelBlks] = find_mdlrefs…(“sldemo_variant_subsystems_modelblocks”)
myModels = 2×1 cell array {'mdlref_nonlinear_controller'} {'sldemo_variant_subsystems_modelblocks'} myModelBlks = 1×1 cell array {'sldemo_variant_subsystems_modelblocks/Controller/Mdl_NonLinear_Controller'}
MatchFilter
:使用find_mdlrefs
函数MatchFilter
选项默认情况下对活动和非活动变量选择应用筛选器。考虑一个带有变体模型Block有两个选项,
Mdl_Linear_控制器
和Mdl_NonLinear_Controller
.过滤函数initFcnMdlBlocks
找到所有模型块,其中InitFcn
设置回调。函数match = ~isempty(get_param(handle))“InitFcn”));结束
该命令返回活动的和非活动的模型模型中的块。
[myModels,myModelBlks] = find_mdlrefs(“sldemo_variant_subsystems_modelblocks”,…“MatchFilter”@initFcnMdlBlocks)
myModels = 3×1 cell array {'mdlref_linear_controller'} {'mdlref_nonlinear_controller'} {'sldemo_variant_subsystems_modelblocks'} myModelBlks = 2×1 cell array {'sldemo_variant_subsystems_modelblocks/Controller/Mdl_Linear_Controller'} {'sldemo_variant_subsystems_modelblocks/Controller/Mdl_NonLinear_Controller'}
find_mdlrefs
不支持使用金宝appMatchFilter
随着变体
选择。这个命令会产生一个错误:
find_mdlrefs (bdroot“MatchFilter”, 金宝app@Simulink.match.activeVariants…“变异”,“ActiveVariants”);
R2020b:指定逻辑值作为的第二个参数find_mdlrefs
不鼓励
不建议从R2020b开始
的find_mdlrefs
函数提供了两种方法来指定是否搜索模型层次结构的所有级别。这两种技术都给出相同的结果,但是只有名称-值对技术允许您指定额外的选项。
,而不是指定是否使用逻辑作为第二个参数搜索模型层次结构的所有级别,而是使用AllLevels
名称-值对。
Abrir比如
Tiene una versión modificada de este ejemploo。是否对所有的修改进行了修改?
MATLAB编程
在MATLAB中,该函数对应于一个最基本的函数:
在MATLAB中,用MATLAB编写了仿真程序。Los navegadores web no admit commandos de MATLAB。
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。