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 / CounterA '} {' sldemo_mdlref_basic / CounterB '} {' sldemo_mdlref_basic / CounterC '}
查找并加载所有模型在模型层次结构
默认情况下,find_mdlrefs
函数加载然后关闭没有加载模型。找出加载模型,使用find_system
函数。
find_mdlrefs (“sldemo_mdlref_depgraph”);find_system (“类型”,“block_diagram”)
ans = 0 x1空单元阵列
查找并加载所有的模型在模型层次结构,集KeepModelsLoaded
来真正的
。
find_mdlrefs (“sldemo_mdlref_depgraph”,“KeepModelsLoaded”,真正的);find_system (“类型”,“block_diagram”)
ans =8 x1细胞{' sldemo_mdlref_thermostat} {‘sldemo_mdlref_heater} {‘sldemo_mdlref_F2C} {‘sldemo_mdlref_outdoor_temp} {‘sldemo_mdlref_house} {‘sldemo_mdlref_heat2cost} {‘simulink_e金宝appxtras} {' sldemo_mdlref_depgraph '}
模型和所有引用的模型仍然加载。如果你打开sldemo_mdlref_depgraph
,您可以在模型层次结构而不必等待被引用的模型加载当你打开它们。
输入参数
系统
- - - - - -系统名称、阻塞道路,或处理
特征向量|字符串标量|数字标量
系统名称、阻塞道路,或处理,指定为一个特征向量,字符串标量,或数字标量。
系统必须是一个基金文件,MDL文件,模型块,或子系统块。
如果您指定一个文件名,不包括文件扩展名。
数据类型:双
|字符
|字符串
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:refModels = find_mdlrefs (topmodel, KeepModelsLoaded,真的,ReturnTopModelAsLastElement,假)
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函数®程序文件。元素的函数以处理作为输入,并返回两个输出。
函数(匹配,修剪)= func(元素)
输入
元素
的处理是块处理。第一个输出,
匹配
,是一个逻辑值。如果假
,搜索跳过元素。第二个输出,
修剪
,是一个可选的逻辑值,只适用于当元素
是一个子系统。默认值是假
。如果这个值设置为真正的
省略,整个子系统的搜索。
例如,使用MatchFilter
找到所有模型块的模型InitFcn
定义回调,使用过滤功能initFcnMdlBlocks
:
函数匹配= initFcnMdlBlocks(处理)匹配= ~ isempty (get_param(句柄,“InitFcn”));结束
openExample (“金宝appsimulink_variants / SimulinkVariantsExample”);模型=“slexVariantMdlRefCondProp”;load_system(模型);(模型、块)= find_mdlrefs(模型,“MatchFilter”@initFcnMdlBlocks)
变体:金宝app®提供这些内置的匹配滤波器函数找到变体块活跃在模拟或生成的代码的一部分。
金宝appSimulink.match.activeVariants
——过滤函数找到块活动在仿真模型编译。金宝appSimulink.match.codeCompileVariants
——过滤函数找到块模型编译后生成的代码的一部分。金宝appSimulink.match.allVariants
——过滤函数找到所有块无论是否阻止活性或活性是由于变异。
请注意
为了得到正确的结果,你必须编译模型使用前金宝appSimulink.match.activeVariants
和金宝appSimulink.match.codeCompileVariants
过滤器。如果模型没有编制,这些过滤器返回所有块的模型。
例如,使用金宝appSimulink.match.activeVariants
选择模型中找到积极的变异。
openExample (“金宝appsimulink_variants / SimulinkVariantsExample”);模型=“slexVariantMdlRefCondProp”;load_system(模型);set_param(模型,“SimulationCommand”,“更新”);(模型、块)= find_mdlrefs(模型,“MatchFilter”,@金宝appSimulink.match.activeVariants);
例如,使用金宝appSimulink.match.codeCompileVariants
选择发现变异的选择是生成的C代码的一部分。
openExample (“金宝appsimulink_variants / SimulinkVariantsExample”);load_system (“slexVariantMdlRefCondProp”);assignin (“基地”,“VSS_MODE”2);slexVariantMdlRefCondProp ([]、[] [],“compileForCodegen”);(模型、块)= find_mdlrefs (“slexVariantMdlRefCondProp”,…“MatchFilter”,@金宝appSimulink.match.codeCompileVariants);slexVariantMdlRefCondProp ([]、[] [],“术语”);
示例:使用金宝appSimulink.match.allVariants ()
过滤模型中找到所有块。
openExample (“金宝appsimulink_variants / SimulinkVariantsExample”);模型=“slexVariantMdlRefCondProp”;load_system(模型);(模型、块)= find_mdlrefs(模型,“MatchFilter”,@金宝appSimulink.match.allVariants);
变体
- - - - - -选项包括变体模型
“ActivePlusCodeVariants”
(默认)|“ActiveVariants”
|“AllVariants”
请注意
的变体
参数将被删除。使用MatchFilter
代替。有关更多信息,请参见兼容性的考虑。
选项包括变体模型在搜索结果中,指定为逗号分隔组成的“变异”
和“ActivePlusCodeVariants”
,“ActiveVariants”
,或“AllVariants”
。
“ActivePlusCodeVariants”
——包括所有变体模型不同的子系统活跃在模拟和生成的代码的一部分。“ActiveVariants”
——包括活跃的变体模型不同的子系统块。“AllVariants”
——包括所有变体模型不同的子系统块。
这个搜索约束仅适用于不同的子系统块的变量控制方式设置为表达式
或标签
。使用find_mdlrefs
函数与MatchFilter
选择要操作的所有类型的变体。
数据类型:字符
|字符串
ReturnTopModelAsLastElement
- - - - - -选项包括指定系统
真正的
或1
(默认)|假
或0
选项包括指定的系统在搜索结果中,指定为逗号分隔组成的“ReturnTopModelAsLastElement”
和一个数字或逻辑1
(真正的
)或0
(假
)。
默认情况下,返回列表的最后一个元素的名称引用的模型是模型中,图书馆或者子系统与指定文件系统
论点。如果你指定一个块,最后一个元素是包含该文件的名称。
数据类型:逻辑
输出参数
版本历史
之前介绍过的R2006aR2022b:警告的变体
论点
的的一部分变体
参数在未来的版本中,这些警告被介绍:
当你使用
find_mdlrefs
函数没有变体
参数,函数生成一个警告,如果跳过不活跃的选择不同的子系统块在搜索。考虑一个模型变体模型块,有两个变量的选择,
Mdl_Linear_Controller
和Mdl_NonLinear_Controller
。的Mdl_NonLinear_Controller
块是主动的选择。这个命令跳过不活跃
Mdl_Linear_Controller
块并生成一个警告。[myModels, myModelBlks] = find_mdlrefs…(“sldemo_variant_subsystems_modelblocks”)
警告:使用find_mdlrefs没有“变异”论点跳过不活跃的变体在搜索子系统块。这种行为将会改变在将来发布的版本中查看所有选择子系统的变体。找块活跃在模拟或代码生成、编译模型和使用内置的变体过滤器“MatchFilter”选项。myModels = 2×1单元阵列{‘mdlref_nonlinear_controller} {‘sldemo_variant_subsystems_modelblocks} myModelBlks = 1×1单元阵列{' sldemo_variant_subsystems_modelblocks /控制器/ Mdl_NonLinear_Controller '}
当你使用
变体
参数的值设置为“AllVariants”
,函数生成一个警告。[myModels, myModelBlks] = find_mdlrefs…(“sldemo_variant_subsystems_modelblocks”,“变异”,“AllVariants”)
警告:“变异”将被删除。而不是用“变异”值设置为“AllVariants”,使用“MatchFilter”值设置为@Simulink.match.allVariants。金宝appmyModels = 3×1单元阵列{‘Linear_Controller} {‘Nonlinear_Controller} {‘sldemo_variant_subsystems_modelblocks} myModelBlks = 2×1单元阵列{sldemo_variant_subsystems_modelblocks /控制器/线性控制器的}{sldemo_variant_subsystems_modelblocks /控制器/非线性控制器的}
R2022a:新的内置块匹配滤波器找到所有变体
您可以使用内置的匹配滤波器,金宝appSimulink.match.allVariants
,找到所有的块无论变体模型块活动或非活动由于变异。这个过滤器是推荐的替代AllVariants
选择。
要删除 | 建议更换 |
---|---|
find_mdlrefs(模型,“变异”,“AllVariants”); |
find_mdlrefs(模型,“MatchFilter”,…@金宝appSimulink.match.allVariants); |
R2021a:违约行为发生了变化变体
和MatchFilter
参数块模型的变体
变体
:当你使用find_mdlrefs
函数没有变体
论点,不同的子系统块,功能目前只包括那些活跃在模拟或选择代码生成默认的搜索。其他变体街区等变异来源,变体水槽,或不同的子系统块的传播条件子系统之外的变体参数设置为
在
在搜索,功能包括所有的选择。考虑一个模型变体模型块,有两个变量的选择,
Mdl_Linear_Controller
和Mdl_NonLinear_Controller
。这个命令只返回活跃模型在模型中。
[myModels, myModelBlks] = find_mdlrefs…(“sldemo_variant_subsystems_modelblocks”)
myModels = 2×1单元阵列{‘mdlref_nonlinear_controller} {‘sldemo_variant_subsystems_modelblocks} myModelBlks = 1×1单元阵列{' sldemo_variant_subsystems_modelblocks /控制器/ Mdl_NonLinear_Controller '}
MatchFilter
:当你使用find_mdlrefs
函数与MatchFilter
参数,函数的过滤器适用于活跃的和不活跃的变体选择默认。考虑一个模型变体模型块,有两个变量的选择,
Mdl_Linear_控制器
和Mdl_NonLinear_Controller
。滤波器的功能initFcnMdlBlocks
发现所有的模型块的InitFcn
设置回调。函数匹配= initFcnMdlBlocks(处理)匹配= ~ isempty (get_param(句柄,“InitFcn”));结束
这个命令返回活跃的和不活跃的模型在模型中。
[myModels, myModelBlks] = find_mdlrefs (“sldemo_variant_subsystems_modelblocks”,…“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 '}
R2021a:变体
参数将被删除
的变体
参数将被删除find_mdlrefs
在以后的版本。使用的函数调用变体
争论继续与一个警告。
使用find_mdlrefs
函数与变体
争论产生不一致的搜索结果。的find_mdlrefs
函数是一个编辑时间操作,但确定一块活跃在与所有类型的变体块模型,您需要编译模型。
找到模型块是活跃在模拟或代码生成、编译模型和使用find_mdlrefs
函数与MatchFilter
论点。
此表列出了推荐替代的不同价值观变体
论点。
要删除 | 建议更换 |
---|---|
find_mdlrefs(模型,“变异”,…“ActiveVariants”); |
set_param(模型,“SimulationCommand”,“更新”);find_mdlrefs(模型,“MatchFilter”,…@金宝appSimulink.match.activeVariants); |
find_mdlrefs(模型,“变异”,…“ActivePlusCodeVariants”); |
模型([]、[][],“compileForCodegen”);(模型、块)= find_mdlrefs(模型,“MatchFilter”,…@金宝appSimulink.match.codeCompileVariants);模型([]、[][],“术语”); |
当你使用find_system
功能,您不能指定的MatchFilter
和变体
参数。
这个命令生成一个错误。
find_mdlrefs (bdroot“MatchFilter”,@金宝appSimulink.match.activeVariants…“变异”,“ActiveVariants”);
R2020b:在搜索过滤器的元素MatchFilter
在搜索匹配和过滤的模型元素,您可以定义一个自定义过滤器函数和传递函数处理价值MatchFilter
名称-值参数。
找块变体活跃在模拟或生成的代码的一部分,您可以使用内置的匹配滤波器功能,金宝appSimulink.match.activeVariants
,金宝appSimulink.match.codeCompileVariants
,金宝appSimulink.match.allVariants
后,编译模型。
R2020b:指定的逻辑值作为第二个参数find_mdlrefs
不鼓励
的find_mdlrefs
函数提供了两种方法来指定是否要搜索所有级别的模型层次结构。这两种技术给出相同的结果,但只有名称-值对技术允许您指定附加选项。
而不是指定是否要搜索所有级别的模型层次结构与逻辑作为第二个参数,使用AllLevels
名称-值对。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。