目录
语法
说明
示例
查找已加载的系统及其模块
查找特定的系统及其模块
返回加载的模型、子系统和库的名称
搜索子系统的子级
使用多个条件进行搜索
以句柄形式返回信号线和注释
搜索特定的模块参数值
使用正则表达式进行搜索
正则表达式搜索部分匹配
更新子系统中的库链接
以句柄形式返回值
find_system工能是查找系统、模块、信号线、端口和注释。
Objects = find_system
Objects = find_system(System)
Objects = find_system(Name,Value)
Objects = find_system(System,Name,Value)
Objects = find_system 返回已加载的系统及其模块,包括子系统。
Objects = find_system(System) 返回指定的系统及其模块。
Objects = find_system(Name,Value) 返回已加载的系统以及这些系统中满足一个或多个 Name,Value 对组参数指定的条件的对象。您可以使用此语法指定搜索约束和搜索特定的参数值。在参数和值对组之前指定搜索约束。
Objects = find_system(System,Name,Value) 返回指定系统中满足指定条件的对象。
返回所有已加载的系统及其模块的名称。
load_system('vdp')
find_system
ans = 15x1 cell
{'vdp' }
{'vdp/Constant' }
{'vdp/More Info' }
{'vdp/More Info/Model Info'}
{'vdp/Mu' }
{'vdp/Mux' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
返回已加载的系统和库,包括 vdp。
返回 vdp 系统及其模块。
load_system({'vdp','ex_sldemo_clutch'})
find_system('vdp')
ans = 15x1 cell
{'vdp' }
{'vdp/Constant' }
{'vdp/More Info' }
{'vdp/More Info/Model Info'}
{'vdp/Mu' }
{'vdp/Mux' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
返回加载的模型、子系统和库的名称。仅当子系统可以独立加载时,才会返回子系统名称。
load_system('vdp');
find_system('type','block_diagram')
ans = 1x1 cell array
{'vdp'}
返回作为 ex_sldemo_clutch 系统的 Unlocked 子系统的子级存在的所有 Goto 模块的名称。
load_system('ex_sldemo_clutch');
find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')
ans = 2x1 cell
{'ex_sldemo_clutch/Unlocked/Goto' }
{'ex_sldemo_clutch/Unlocked/Goto1'}
在 vdp
系统中进行搜索,并返回增益值设置为 1
的所有 Gain 模块的名称。
load_system('vdp');
find_system('vdp','BlockType','Gain','Gain','1')
ans = 1x1 cell array
{'vdp/Mu'}
获取 vdp 系统中所有信号线和注释的句柄。对于 'FindAll',不管如何指定要搜索的系统,该函数都会返回句柄。
load_system('vdp');
L = find_system('vdp','FindAll','on','type','line')
L = 19×1
34.0004
33.0004
32.0004
31.0004
30.0004
29.0004
28.0004
27.0004
26.0004
25.0004
⋮
A = find_system('vdp','FindAll','on','type','annotation')
A = 2×1
36.0004
35.0004
在 vdp 和 ex_sldemo_clutch 系统中查找值为 0 的任何模块对话框参数。
load_system({'vdp','f14'})
find_system({'vdp','f14'},'BlockDialogParams','0')
ans =
32×1 cell array
{'vdp/More Info' }
{'vdp/More Info/Model Info' }
{'vdp/Scope' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out1' }
{'vdp/Out2' }
{'vdp/Out2' }
{'f14/Aircraft↵Dynamics↵Model' }
{'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
{'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
{'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)' }
{'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)' }
.
.
.
在当前加载的系统的顶层查找模块对话框参数值以 3
开头的所有模块。
load_system({'ex_sldemo_clutch','vdp'});
find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 4x1 cell
{'vdp/Scope' }
{'vdp/Scope' }
{'vdp/Square' }
{'ex_sldemo_clutch/w'}
使用正则表达式进行搜索时,可以指定要匹配的字符向量的一部分,以返回包含该字符向量的所有对象。在 ex_sldemo_clutch 模型中查找所有 Inport 和 Outport 模块。
load_system('ex_sldemo_clutch');
find_system('ex_sldemo_clutch','regexp','on','blocktype','port')
ans = 39x1 cell
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction Mode Logic/Tin' }
{'ex_sldemo_clutch/Friction Mode Logic/Tfmaxs' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/lock' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/unlock' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/locked' }
{'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tin'}
{'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tf' }
{'ex_sldemo_clutch/Friction Mode Logic/locked' }
{'ex_sldemo_clutch/Friction Mode Logic/lock' }
{'ex_sldemo_clutch/Friction Mode Logic/unlock' }
{'ex_sldemo_clutch/Friction Mode Logic/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 只包含一个子系统,它是一个库链接。上次打开模型后,向库中对应的子系统中添加了一个 Gain 模块。
打开模型。使用 find_system 并将 'FollowLinks' 设置为 'off'。此命令不会跟随库链接进入子系统,并且只返回顶层子系统。
open_system('myModel')
find_system(bdroot,'LookUnderMasks','on','FollowLinks', 'off')
ans =
'myModel'
'myModel/Subsystem'
使用 find_system 并将 'FollowLinks' 设置为 'on'。find_system 将更新库链接,并返回子系统中的模块。
find_system(bdroot,'LookUnderMasks','on','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain
Updating Link: myModel/Subsystem/Gain
ans =
'myModel'
'myModel/Subsystem'
'myModel/Subsystem/Gain'
将该系统作为句柄提供给 find_system。搜索值为 0 的模块对话框参数。如果对同一个模块多次调用 get_param,则使用模块句柄比以字符向量形式指定完整模块路径更高效。
load_system('vdp');
sys = get_param('vdp','Handle');
find_system(sys,'BlockDialogParams','0')
ans = 8×1
3.0006
4.0006
8.0006
13.0006
14.0006
14.0006
15.0006
15.0006