find_system
查找系统、块、行、端口和注释
语法
描述
例子
找到加载的系统和它们的块
返回所有加载的系统及其块的名称。
load_system (“vdp”) find_system
ans =15 x1细胞{vdp的}{‘vdp /常数’}{' vdp /更多信息'}{vdp /信息/模型信息的}{的vdp /亩}{的vdp / Mux} {vdp /产品的}{vdp /范围的}{vdp /平方的}{vdp /总和的}{的vdp / Sum1} {vdp / x1的}{vdp / x2的}{vdp /着干活的}{' vdp / Out2 '}
返回加载的系统和库,包括vdp
.
找到特定的系统及其块
返回vdp
系统及其块。
load_system ({“vdp”,“ex_sldemo_clutch”}) find_system (“vdp”)
ans =15 x1细胞{vdp的}{‘vdp /常数’}{' vdp /更多信息'}{vdp /信息/模型信息的}{的vdp /亩}{的vdp / Mux} {vdp /产品的}{vdp /范围的}{vdp /平方的}{vdp /总和的}{的vdp / Sum1} {vdp / x1的}{vdp / x2的}{vdp /着干活的}{' vdp / Out2 '}
返回加载的模型、子系统和库的名称
返回加载的模型、子系统和库的名称。只有当子系统可以独立加载时,才返回子系统名称。
load_system (“vdp”);find_system (“类型”,“block_diagram”)
ans =1x1单元阵列{' vdp '}
子系统搜索子节点
类中未锁定子系统的子系统的所有Goto块的名称ex_sldemo_clutch
系统。
load_system (“ex_sldemo_clutch”);find_system (“ex_sldemo_clutch /解锁”,“SearchDepth”, 1“BlockType”,“转到”)
ans =2 x1细胞{'ex_sldemo_clutch/Unlocked/Goto'} {'ex_sldemo_clutch/Unlocked/Goto1'}
The MathWorks, Inc.版权所有
使用多条件搜索
在vdp
返回所有增益块的名称获得值设置为1
.
load_system (“vdp”);find_system (“vdp”,“BlockType”,“获得”,“获得”,' 1 ')
ans =1x1单元阵列{' vdp /μ'}
返回行和注释作为句柄
类中所有行和注释的句柄vdp
系统。与“FindAll”
,无论您如何指定要搜索的系统,该函数都会返回句柄。
load_system (“vdp”);L = find_system(“vdp”,“FindAll”,“上”,“类型”,“行”)
L =19×134.0009 33.0009 32.0009 31.0010 30.0010 29.0010 28.0009 27.0033 26.0009 25.0009
A = find_system(“vdp”,“FindAll”,“上”,“类型”,“注释”)
一个=2×136.0009 - 35.0009
搜索特定块参数值
查找值为的任何块对话框参数0
在vdp
而且ex_sldemo_clutch
系统。
load_system ({“vdp”,“f14”find_system ({})“vdp”,“f14”},“BlockDialogParams”,' 0 ')
ans = 32×1 cell array {'vdp/更多信息'}{'vdp/更多信息/模型信息'}{'vdp/x2'} {'vdp/Out1'} {'vdp/Out1'} {'vdp/Out1'} {'f14/飞机(动力学)(模型)'}{'f14/飞机(动力学)(模型/垂直速度)(w (ft//sec)'} {'f14/飞机(动力学)(模型/垂直速度)(w (ft//sec)'} {'f14/飞机(动力学)(模型/垂直速度)(q (rad//sec)'} {'f14/飞机(动力学)(模型/垂直速度)(q (rad//sec)'} {'f14/飞机(动力学)(模型/俯仰速度)(q (rad//sec)'} {'f14/飞机(动力学)(模型/俯仰速度)(q (rad//sec)'} {'f14/飞机(动力学)(模型/俯仰速度)(模型/俯仰速度)(q (rad//sec)'} {'f14/飞机(动力学)(模型/俯仰速度)(模型/俯仰速度)(q (rad//sec)'} {'f14/飞机(动力学)(模型/俯仰速度)(模型/俯仰速度)(q (rad//sec)'} {'f14/飞机(动力学)(模型/俯仰速度)(模型/俯仰速度)(q (rad//sec)')
使用正则表达式搜索
以块对话框参数值开始查找当前加载系统的顶层中的所有块3.
.
load_system ({“ex_sldemo_clutch”,“vdp”});find_system (“SearchDepth”,' 1 ',“正则表达式”,“上”,“BlockDialogParams”,' ^ 3 ')
ans =4 x1细胞{' vdp /范围'}{vdp /范围的}{vdp /平方的}{' ex_sldemo_clutch / w '}
正则表达式搜索部分匹配
使用正则表达式搜索时,可以指定要匹配的字符向量的一部分,以返回包含该字符向量的所有对象。控件中的所有导入和输出块ex_sldemo_clutch
模型。
load_system (“ex_sldemo_clutch”);find_system (“ex_sldemo_clutch”,“正则表达式”,“上”,“blocktype”,“端口”)
ans =39 x1细胞{' ex_sldemo_clutch /摩擦……'} {'ex_sldemo_clutch/摩擦…'} {'ex_sldemo_clutch/摩擦…'} {'ex_sldemo_clutch/摩擦模式逻辑/Tin'} {'ex_sldemo_clutch/摩擦模式逻辑/Tfmaxs'} {'ex_sldemo_clutch/摩擦模式逻辑/破碎分开…'} {'ex_sldemo_clutch/摩擦模式逻辑/破碎分开…'} {'ex_sldemo_clutch/摩擦模式逻辑/破碎分开…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…'} {'ex_sldemo_clutch/摩擦模式逻辑/锁定…”}{' ex_sldemo_clutch /摩擦模式逻辑/禁售FSM /锁'}{' ex_sldemo_clutch /摩擦模式逻辑/ FSM锁定/解锁”}{' ex_sldemo_clutch /摩擦模式逻辑/禁售FSM /锁’}{' ex_sldemo_clutch /摩擦模式逻辑/必要的摩擦/锡'}{' ex_sldemo_clutch /摩擦模式逻辑/必要的摩擦/ Tf '} {ex_sldemo_clutch /摩擦模式逻辑锁的}{ex_sldemo_clutch /摩擦模式逻辑锁的}{ex_sldemo_clutch /摩擦模式逻辑/解锁的}{ex_sldemo_clutch /摩擦模式逻辑/ Tf的}{'ex_sldemo_clutch/Locked/Tin'} {'ex_sldemo_clutch/Locked/w'} {'ex_sldemo_clutch/Unlocked/Tfmaxk'} {'ex_sldemo_clutch/Unlocked/Tin'} {'ex_sldemo_clutch/Unlocked/we'}
更新子系统中的库链接
在这个例子中,myModel
包含一个单独的子系统,它是一个库链接。在模型最后一次打开后,一个获得块被添加到库中相应的子系统中。
打开模型。使用find_system
与“FollowLinks”
设置为“关闭”
.该命令不按照库链接进入子系统,只返回顶层的子系统。
open_system (“myModel”) find_system (bdroot“LookUnderMasks”,“上”,“FollowLinks”,“关闭”)
ans = 'myModel' 'myModel/子系统'
使用find_system
与“FollowLinks”
设置为“上”
.find_system
更新库链接并返回子系统中的块。
find_system (bdroot“LookUnderMasks”,“上”,“FollowLinks”,“上”)
更新链接:myModel/Subsystem/Gain ans = 'myModel' 'myModel/Subsystem' 'myModel/Subsystem/Gain'
以句柄形式返回值
提供系统find_system
作为一个手柄。搜索值为的块对话框参数0
.如果你打多个电话给get_param
对于相同的块,使用块句柄比指定完整的块路径作为字符向量更有效。
load_system (“vdp”);Sys = get_param(“vdp”,“处理”);find_system (sys,“BlockDialogParams”,' 0 ')
ans =8×13.0013 4.0013 8.0011 13.0011 14.0011 14.0011 15.0011 15.0011
输入参数
系统
- - - - - -搜索系统
路径名|路径名称的单元格数组|处理|句柄向量
要搜索的系统,指定为完整的系统路径名、系统路径名的单元格数组、句柄或句柄向量。
例子:“MyModel / Subsystem1”
例子:{“vdp”、“ex_sldemo_clutch”}
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:‘SearchDepth’,‘0’,‘LookUnderMasks’,‘没有’,‘BlockType’,“转到”
在加载系统(不包括屏蔽子系统)中搜索Goto块。
当你使用find_system
函数,名称,值
对参数可以包括搜索约束、参数名和值对。您可以以任何顺序指定搜索约束,但它们必须在参数名和值对之前。
看到屏蔽一些参数用于块参数列表。
BlockDialogParams
- - - - - -选项,用于搜索块对话框参数的指定值
特征向量|字符串标量
选项用于搜索块对话框参数中的指定值,指定为由逗号分隔的对组成“BlockDialogParams”
和字符向量或字符串标量。该搜索约束对必须遵循其他搜索约束对。
CaseSensitive
- - - - - -选项在匹配时考虑大小写
“上”
(默认)|“关闭”
选项,在匹配时考虑大小写,指定为逗号分隔的对,由“CaseSensitive”
而且“上”
区分大小写的搜索或“关闭”
.
FindAll
- - - - - -选项,在系统中包括行、端口和注释
“关闭”
(默认)|“上”
选项,在搜索中的系统中包括行、端口和注释,指定为逗号分隔的对,由“FindAll”
而且“上”
或“关闭”
.当此选项设置为“上”
,find_system
返回一个句柄向量,无论您如何指定系统
论点。
FirstResultOnly
- - - - - -选项,只返回第一个结果
“关闭”
(默认)|“上”
选项,只返回第一个结果,然后停止搜索,指定为由逗号分隔的对组成“FirstResultOnly”
而且“上”
或“关闭”
.
LookInsideSubsystemReference
- - - - - -查看所引用子系统内部的选项
“上”
(默认)|“关闭”
选项,以查看模型中引用的子系统的内部,并列出以逗号分隔的对指定的子块“LookInsideSubsystemReference”
而且“上”
或“关闭”
.
FollowLinks
- - - - - -选项跟随链接进入库块
“关闭”
(默认)|“上”
选项将链接跟踪到库块中,指定为逗号分隔的对,由“FollowLinks”
而且“上”
或“关闭”
.如果您没有指定要搜索的系统,find_system
在结果中包括已加载的库,无论您是否设置“FollowLinks”
来“上”
或“关闭”
.你可以使用“FollowLinks”
与“LookUnderMasks”
更新子系统中的库链接。看到更新子系统中的库链接.
IncludeCommented
- - - - - -选项,包括注释块
“关闭”
(默认)|“上”
选项,在搜索中包含注释块,指定为逗号分隔的对,由“IncludeCommented”
而且“上”
或“关闭”
.
LoadFullyIfNeeded
- - - - - -选项加载任何部分加载的模型
“上”
(默认)|“关闭”
选项加载任何部分加载的模型,指定为逗号分隔的对“LoadFullyIfNeeded”
而且“上”
加载模型或“关闭”
禁用加载。例如,使用此选项可以防止负载警告。
LookUnderMasks
- - - - - -在面具下搜索的选项
“图形”
(默认)|“没有”
|“功能”
|“所有”
|“上”
|“关闭”
掩码下搜索的选项,指定为逗号分隔的对,由“LookUnderMasks”
其中一个选项是:
“图形”
—搜索包括没有工作区和对话框的屏蔽子系统。“没有”
—搜索时跳过屏蔽的子系统。“功能”
—搜索包括没有对话框的屏蔽子系统。“所有”
—Search包括所有被屏蔽的子系统。“上”
—Search包括所有被屏蔽的子系统。“关闭”
—搜索跳过屏蔽子系统。
正则表达式
- - - - - -选项,将搜索表达式视为正则表达式
“关闭”
(默认)|“上”
选项,将搜索表达式视为由逗号分隔的对组成的正则表达式“正则表达式”
而且“上”
将搜索表达式视为正则表达式或“关闭”
.学习更多关于MATLAB的知识®正则表达式,参见正则表达式.
SearchDepth
- - - - - -选项限制搜索深度
正整数字符向量或字符串标量
选项,将搜索深度限制为指定的级别,指定为逗号分隔的对,由“SearchDepth”
和一个正整数字符向量或字符串标量。例如,指定' 0 '
为了只搜索装载的系统,' 1 '
对于顶层系统的块和子系统,' 2 '
对于顶层系统及其子系统,等等。默认是搜索所有级别。
变体
- - - - - -搜索变量的选项
“ActiveVariants”
(默认)|“AllVariants”
|“ActivePlusCodeVariants”
请注意
的变体
参数将被删除。使用MatchFilter
代替。有关更多信息,请参见兼容性的考虑.
用于搜索变量的选项,指定为逗号分隔的对,由“变异”
其中一个选项是:
“ActiveVariants”
-只搜索激活的变体选择不同的子系统.“AllVariants”
-搜索所有的变体选择不同的子系统.“ActivePlusCodeVariants”
-搜索所有的变体选择不同的子系统在模拟中是活跃的,并且是生成代码的一部分。
此搜索限制仅适用于不同的子系统具有变型控制方式设置为表达式
或标签
.使用find_system
函数与MatchFilter
选项操作的所有类型的变体块。
MatchFilter
- - - - - -在搜索中匹配和过滤元素的选项
函数处理
选项,用于匹配和筛选搜索中的块、系统、行、端口和注释等元素,指定为函数句柄。使用MatchFilter
确定在搜索中是否应该包括或跳过元素。
论点:
允许您使用自定义筛选函数筛选元素
避免在过滤器不匹配时处理元素
在块、行或注释上应用复杂过滤器,以便在内部过滤结果
命名函数必须在MATLAB程序文件中定义。该函数接受元素的句柄作为输入,并返回两个输出。
函数[match, prune] = func(element)
输入
元素
正在处理的块的句柄。第一个输出,
匹配
,为逻辑值。如果假
,搜索跳过元素。第二个输出,
修剪
,是一个可选的逻辑值,仅适用于元素
是一个子系统。默认值为假
.如果该值设置为真正的
时,整个子系统将从搜索中省略。
示例:使用MatchFilter
找到所有非轮廓尺寸而且外港在模型中使用你自己定义的过滤器函数,nonInOutBlocks
.
函数match = nonInOutBlocks(handle) match = true;如果比较字符串(get_param(句柄,“类型”),“块”blockType = get_param(句柄,“BlockType”);如果比较字符串(blockType“尺寸”) | |...比较字符串(blockType“输出港”) match = false;结束结束结束
load_system (“vdp”);BLKS = find_system(“vdp”,“MatchFilter”@nonInOutBlocks)
变体:金宝app®提供这些内置匹配筛选器函数,以查找模拟中活动的变量块或部分生成的代码。
金宝appSimulink.match.activeVariants
-过滤功能,以查找在模型编译后的模拟中活跃的块。金宝appSimulink.match.codeCompileVariants
-过滤器功能,以查找块的一部分,生成的代码在模型编译后。金宝appSimulink.match.allVariants
-过滤功能,查找所有的块,而不管块是否由于变量而处于活动或非活动状态。
请注意
为了得到正确的结果,您必须编译模型使用前金宝appSimulink.match.activeVariants
而且金宝appSimulink.match.codeCompileVariants
过滤器。如果没有编译模型,这些过滤器将返回模型中的所有块。
有关比较这些过滤器的预编译和后编译时结果的示例,请参见使用find_system和内置的MatchFilter选项变体块.
示例:使用金宝appSimulink.match.activeVariants
筛选以查找模型中的活动变量。
目录(fullfile (matlabroot,“例子”,“金宝appsimulink_variants”,“主要”));模型=“sldemo_variant_subsystems”;load_system(模型);assignin (“基地”,“VSS_MODE”2);set_param(模型,“SimulationCommand”,“更新”);activeBlks = find_system(模型,“MatchFilter”, @金宝appSimulink.match.activeVariants);
示例:使用金宝appSimulink.match.codeCompileVariants
过滤器来查找生成的C代码中的变体选项。
目录(fullfile (matlabroot,“例子”,“金宝appsimulink_variants”,“主要”));load_system (“sldemo_variant_subsystems”);assignin (“基地”,“VSS_MODE”2);sldemo_variant_subsystem ([], [], [],“compileForCodegen”);activeBlks = find_system (“sldemo_variant_subsystems”,“MatchFilter”, @金宝appSimulink.match.codeCompileVariants);sldemo_variant_subsystem ([], [], [],“术语”);
示例:使用金宝appSimulink.match.allVariants ()
筛选器以查找模型中的所有块。
find_system (“sldemo_variant_subsystems”,“MatchFilter”, @金宝appSimulink.match.allVariants);
输出参数
版本历史
R2006a之前介绍R2022b:拆卸的警告变体
论点
作为移除的一部分变体
参数,已引入以下警告:
当你使用
find_system
函数没有变体
参数的非活动选择时,函数将生成警告不同的子系统在搜索过程中阻塞。考虑一个带有不同的子系统Block有两个不同的选项,
线性控制器
而且非线性控制器
.的非线性控制器
Block是主动选择。该命令跳过非活动
线性控制器
阻塞并生成警告。Blocks = find_system(“sldemo_variant_subsystems /控制器”)
警告:使用不带“variables”参数的find_system会跳过搜索中不活跃的Variant子系统块。这种行为将在未来的版本中改变,以查看变体子系统的所有选择。要找到在模拟或代码生成中活跃的块,编译模型并使用带有'MatchFilter'选项的内置变体过滤器。块= 12×1单元阵列{sldemo_variant_subsystems /控制器的}{' sldemo_variant_subsystems /控制器/ sensor1 '} {' sldemo_variant_subsystems /控制器/ sensor2 '} {' sldemo_variant_subsystems /控制器/ sensor3 '} {sldemo_variant_subsystems /控制器/非线性控制器的}{' sldemo_variant_subsystems /控制器/非线性控制器/ sensor1 '} {' sldemo_variant_subsystems /控制器/非线性控制器/ sensor2 '} {' sldemo_variant_subsystems /控制器/非线性控制器/ sensor3 '}{' sldemo_variant_子系统/控制器/非线性控制器/一维查找表'}{' sldemo_variant_子系统/控制器/非线性控制器/Add'} {' sldemo_variant_子系统/控制器/非线性控制器/Out1'} {' sldemo_variant_子系统/控制器/Out1'}
当你使用
变体
参数,其值设置为“AllVariants”
时,该函数生成警告。Blocks = find_system(“sldemo_variant_subsystems /控制器”,“变异”,“AllVariants”)
警告:“变体”将被删除。不要使用值设置为“allvariables”的“variables”,而是使用值设置为@ simulink .match. allvariables的“MatchFilter”。金宝app块= 19×1单元阵列{sldemo_variant_subsystems /控制器的}{' sldemo_variant_subsystems /控制器/ sensor1 '} {' sldemo_variant_subsystems /控制器/ sensor2 '} {' sldemo_variant_subsystems /控制器/ sensor3 '} {sldemo_variant_subsystems /控制器/线性控制器的}{' sldemo_variant_subsystems /控制器/线性控制器/ sensor1 '} {' sldemo_variant_subsystems /控制器/线性控制器/ sensor2 '} {' sldemo_variant_subsystems /控制器/线性控制器/ sensor3 '}{“sldemo_variant_subsystems /控制器/线性控制器/添加”}{' sldemo_variant_subsystems /控制器/线性控制器/离散↵转移Fcn '} {sldemo_variant_subsystems /控制器/线性控制器/着干活的}{sldemo_variant_subsystems /控制器/非线性控制器的}{' sldemo_variant_subsystems /控制器/非线性控制器/ sensor1 '}{‘sldemo_variant_subsystems /控制器/非线性控制器/ sensor2} {' sldemo_variant_subsystems /控制器/非线性控制器/ sensor3 '}{' sldemo_variant_子系统/控制器/非线性控制器/一维查找表'}{' sldemo_variant_子系统/控制器/非线性控制器/Add'} {' sldemo_variant_子系统/控制器/非线性控制器/Out1'} {' sldemo_variant_子系统/控制器/Out1'}
R2022a:新的内置匹配过滤器找到所有的变体块
你可以使用内置的匹配过滤器,金宝appSimulink.match.allVariants
,以查找变体模型中的所有块,而不管该块是否由于变体而处于活动或非活动状态。此过滤器是推荐的替换AllVariants
选择。
待移除 | 建议更换 |
---|---|
find_system(模型,“变异”,...“AllVariants”); |
find_system(模型,“MatchFilter”,...@金宝appSimulink.match.allVariants); |
R2021a:默认行为已更改变体
而且MatchFilter
模型中的参数具有不同的块
变体
:当你使用find_system
函数,而不指定变体
参数时,函数当前仅包括的活动变量选择不同的子系统默认情况下,搜索块。对于其他变体块,如变异来源,变体水槽,或不同的子系统块。在变量子系统之外传播条件参数设置为
在
,该函数包含搜索中的所有选项。考虑一个带有不同的子系统有两种不同的选择,
线性控制器
而且非线性控制器
.此命令只返回活动的添加模型中的块。
Add_blocks = find_system(“sldemo_variant_subsystems /控制器”,...“BlockType”,“和”)
add_blocks = 1×1单元阵列{' sldemo_variant_子系统/控制器/非线性控制器/添加'}
MatchFilter
:当你使用find_system
函数与MatchFilter
参数时,该函数默认对激活和非激活变量选项应用筛选器。考虑一个带有不同的子系统有两种不同的选择,
线性控制器
而且非线性控制器
.过滤函数findAddBlocks
找到所有添加模型中的块。函数match = findAddBlocks(句柄)match = strcmp(get_param(句柄)“类型”),“块”) & &...比较字符串(get_param(句柄,“BlockType”),“和”);结束
该命令返回active和inactive添加模型中的块。
Add_blocks = find_system(“sldemo_variant_subsystems”,“MatchFilter”,...@findAddBlocks)
add_blocks = 2×1单元阵列{' sldemo_variant_子系统/控制器/线性控制器/Add'} {' sldemo_variant_子系统/控制器/非线性控制器/Add'}
R2021a:变体
参数将被删除。
的变体
参数将从find_system
在未来的版本中。函数调用变体
论点继续工作,警告。
使用find_system
函数与变体
参数产生不一致的搜索结果。的find_system
函数是一个编辑时操作,但是要确定一个块在包含所有类型的变量块的模型中是否处于活动状态,您需要编译模型。
为了找到在模拟或代码生成期间活动的变体块,编译模型并使用find_system
函数与MatchFilter
论点。
该表列出了不同值的推荐替换变体
论点。
待移除 | 建议更换 |
---|---|
find_system(模型,“变异”,...“ActiveVariants”); |
set_param(模型,“SimulationCommand”,“更新”);find_system(模型,“MatchFilter”,...@金宝appSimulink.match.activeVariants); |
find_system(模型,“变异”,...“ActivePlusCodeVariants”); |
Model ([], [], [],“compileForCodegen”);activeBlks = find_system(模型,“MatchFilter”,...@金宝appSimulink.match.codeCompileVariants);Model ([], [], [],“术语”); |
当你使用find_system
函数时,不能同时指定MatchFilter
而且变体
参数。
该命令将产生一个错误。
find_system (bdroot“MatchFilter”, 金宝app@Simulink.match.activeVariants...“变异”,“ActiveVariants”);
R2020b:搜索时的筛选元素MatchFilter
类的值来匹配和筛选模型元素,可以定义自定义筛选函数并将函数句柄作为值传递给MatchFilter
名称-值参数。
要查找模拟中活动的变量块或部分生成的代码,您可以使用内置的匹配过滤器函数,金宝appSimulink.match.activeVariants
,金宝appSimulink.match.codeCompileVariants
,金宝appSimulink.match.allVariants
,在编译模型后。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。