目录
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