find_mdlrefs
モデルの階層構造内の参照モデルと Model ブロックの検索
説明
[
は、1 つ以上の名前と値のペアを使用して、追加の検索オプションを提供します。たとえば、モデルを一時的に読み込むのではなく読み込んだままにする場合、models
,blocks
] = find_mdlrefs(system
,Name,Value
)KeepModelsLoaded
を true
に設定します。
例
モデルの階層構造内での参照モデルの検索
指定されたモデルによって参照されるすべてのモデルの参照モデルおよび Model ブロックを検索します。
load_system('sldemo_mdlref_basic'); [myModels,myModelBlks] = find_mdlrefs('sldemo_mdlref_basic')
myModels = 2x1 cell
{'sldemo_mdlref_counter'}
{'sldemo_mdlref_basic' }
myModelBlks = 3x1 cell
{'sldemo_mdlref_basic/CounterA'}
{'sldemo_mdlref_basic/CounterB'}
{'sldemo_mdlref_basic/CounterC'}
モデルの階層構造内のすべてのモデルの検索と読み込み
既定では、関数 find_mdlrefs
はまだ読み込まれていないモデルを読み込んでから閉じます。読み込まれているモデルを特定するには、関数 find_system
を使用します。
find_mdlrefs('sldemo_mdlref_depgraph'); find_system('type','block_diagram')
ans = 0x1 empty cell array
モデルの階層構造内のすべてのモデルを検索して読み込むには、KeepModelsLoaded
を true
に設定します。
find_mdlrefs('sldemo_mdlref_depgraph','KeepModelsLoaded',true); find_system('type','block_diagram')
ans = 7x1 cell
{'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
を開くと、参照モデルを開いて参照モデルが読み込まれるのを待たずにモデルの階層構造を移動できます。
入力引数
system
— システム名、ブロック パス、またはハンドル
文字ベクトル | string スカラー | 数値スカラー
システム名、ブロック パス、またはハンドル。文字ベクトル、string スカラー、または数値スカラーとして指定します。
システムは SLX ファイル、MDL ファイル、Model ブロック、または Subsystem ブロックでなければなりません。
ファイル名を指定するときに、ファイルの拡張子を含めないでください。
データ型: double
| char
| string
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: refModels = find_mdlrefs(topmodel,'KeepModelsLoaded',true,'ReturnTopModelAsLastElement',false)
KeepModelsLoaded
— モデルを読み込まれたままにするオプション
false
または 0
(既定値) | true
または 1
モデルを読み込まれたままにするオプション。'KeepModelsLoaded'
と数値または logical 1
(true
) または 0
(false
) で構成されるコンマ区切りのペアとして指定します。
既定では、関数はまだ読み込まれていないモデルを読み込んでから閉じます。モデルを読み込んだままにするには、この引数を true
に設定します。モデルを読み込んだままにすると、モデルの検索後にモデルを操作する予定がある場合に役立ちます。
データ型: logical
AllLevels
— 検索するレベル
true
または 1
(既定値) | false
または 0
検索するレベル。'AllLevels'
と数値または logical 1
(true
) または 0
(false
) で構成されるコンマ区切りのペアとして指定します。
true
— 指定されたsystem
のモデルの階層構造内のすべての Model ブロックを検索します。false
— 最上位レベルのシステムのみを検索します。
データ型: logical
IncludeProtectedModels
— 保護モデルを含めるためのオプション
false
または 0
(既定値) | true
または 1
保護モデルを検索結果に含めるオプション。'IncludeProtectedModels'
と数値または logical 1
(true
) または 0
(false
) で構成されるコンマ区切りのペアとして指定します。
この設定は、返される参照モデルのリストにのみ影響します。返される Model ブロックのリストには影響しません。
データ型: logical
IncludeCommented
— コメント付きブロックを含めるオプション
false
または 0
(既定値) | true
または 1
コメント付きブロックを検索結果に含めるオプション。'IncludeCommented'
と数値または logical 1
(true
) または 0
(false
) で構成されるコンマ区切りのペアとして指定します。
データ型: logical
CaseSensitive
— 検索時に大文字小文字を区別するオプション
true
(既定値) | false
検索時に大文字小文字を区別するオプション。大文字小文字を区別する検索の場合は true
、大文字小文字を区別しない検索の場合は false
として指定します。
データ型: logical
FollowLinks
— ライブラリ リンクに従って検索するオプション
false
(既定値) | true
ライブラリ リンクに従って検索するオプション。true
または false
として指定します。true
の場合、検索はライブラリ ブロックへリンクされたものを含みます。
データ型: logical
LookUnderMasks
— マスクされたブロックを検索するオプション
'all'
(既定値) | 'none'
| 'functional'
| 'graphical'
マスクされたブロックを検索するオプション。次として指定します。
'all'
— マスクされたすべてのブロック内を検索します。'none'
— マスクされたシステムでの検索を回避します。'functional'
— ダイアログをもたないマスク サブシステムも検索します。'graphical'
— ワークスペースまたはダイアログをもたないマスク サブシステムも検索します。
データ型: char
| string
MatchFilter
— 検索で要素を含めるかスキップするかを決定する関数ハンドル
関数ハンドル
ブロック、システム、ライン、端子、注釈など、検索内の要素に一致させる関数ハンドル。MatchFilter
を使用して、検索で要素を含めるべきか、スキップすべきかどうかを決定します。
名前付き関数は MATLAB® プログラム ファイル内で定義されていなければなりません。関数は要素のハンドルを入力として取り、2 つの出力を返します。
function [match, prune] = func(element)
入力
element
は処理されているブロックのハンドルです。1 つ目の出力
match
は logical 値です。false
の場合、検索で要素がスキップされます。2 つ目の出力
prune
は、element
がサブシステムである場合にのみ適用される、オプションの logical 値です。既定値はfalse
です。この値がtrue
に設定されている場合、サブシステム全体が検索対象から除外されます。
たとえば、MatchFilter
を使用して、フィルター関数 initFcnMdlBlocks
を使用して InitFcn
コールバックが定義されたモデル内のすべての Model ブロックを検索します。
function match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle,'InitFcn')); end
addpath(fullfile(matlabroot,'examples','simulink_variants','main')); model='slexVariantMdlRefCondProp'; load_system(model); [models,blocks] = find_mdlrefs(model,'MatchFilter',@initFcnMdlBlocks)
バリアント: アクティブなバリアントやコード コンパイルのバリアント ブロックを見つけるには、モデルをコンパイルして、Simulink® が提供する適切なマッチ フィルター関数を適用します。
Simulink.match.activeVariants
— モデルのコンパイル後にシミュレーションでアクティブなブロックと一致します。Simulink.match.codeCompileVariants
— モデルのコンパイル後に生成されたコードの一部であるブロックと一致します。
メモ
正しい結果を得るには、Simulink.match.activeVariants
フィルターと Simulink.match.codeCompileVariants
フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。
たとえば、Simulink.match.activeVariants
オプションを使用して、モデル内のアクティブなバリアントを検出します。
addpath(fullfile(matlabroot,'examples','simulink_variants','main')); model='slexVariantMdlRefCondProp'; load_system(model); set_param(model,'SimulationCommand','update'); [models,blocks] = find_mdlrefs(model,'MatchFilter',@Simulink.match.activeVariants);
たとえば、Simulink.match.codeCompileVariants
オプションを使用して、生成された C コードの一部であるバリアントの選択を検出します。
addpath(fullfile(matlabroot,'examples','simulink_variants','main')); load_system('slexVariantMdlRefCondProp'); assignin('base','VSS_MODE',2); slexVariantMdlRefCondProp([],[],[],'compileForCodegen'); [models,blocks] = find_mdlrefs('slexVariantMdlRefCondProp',... 'MatchFilter',@Simulink.match.codeCompileVariants); slexVariantMdlRefCondProp([],[],[],'term');
Variants
— バリアント モデルを含めるオプション
'ActivePlusCodeVariants'
(既定値) | 'ActiveVariants'
| 'AllVariants'
メモ
Variants
引数は削除される予定です。代わりに MatchFilter
を使用してください。詳細については、互換性についての考慮事項を参照してください。
バリアント モデルを検索結果に含めるオプション。'Variants'
と 'ActivePlusCodeVariants'
、'ActiveVariants'
、または 'AllVariants'
で構成されるコンマ区切りのペアとして指定します。
'ActivePlusCodeVariants'
— シミュレーション内でアクティブであり、生成されたコードの一部である Variant Subsystem 内のすべてのバリアント モデルを含めます。'ActiveVariants'
— Variant Subsystem ブロック内のアクティブなバリアント モデルを含めます。'AllVariants'
— Variant Subsystem ブロック内のすべてのバリアント モデルを含めます。
この検索条件は、[バリアント制御モード] が expression
または label
に設定されている Variant Subsystem ブロックにのみ適用されます。MatchFilter
オプションを指定して関数 find_mdlrefs
を使用すると、すべてのタイプのバリアント ブロックについて動作します。
データ型: char
| string
ReturnTopModelAsLastElement
— 指定されたシステムを含めるオプション
true
または 1
(既定値) | false
または 0
指定されたシステムを検索結果に含めるオプション。'ReturnTopModelAsLastElement'
と数値または logical 1
(true
) または 0
(false
) で構成されるコンマ区切りのペアとして指定します。
既定では、参照モデルの返されたリスト内の最後の要素は、system
引数で指定したモデル、ライブラリ、またはサブシステム ファイルの名前です。ブロックを指定する場合、最後の要素はブロックを含むファイルの名前です。
データ型: logical
出力引数
バージョン履歴
R2006a より前に導入R2021a: Variants
引数は削除予定
R2021a 以降は警告
Variants
オプションは将来のリリースで find_mdlrefs
から削除されます。Variants
オプションを使用するスクリプトは引き続き動作しますが、警告が出ます。
シミュレーション中またはコード生成中にアクティブである Model ブロックを検索するには、モデルをコンパイルし、関数 find_mdlrefs
を MatchFilter
オプションを指定して使用します。
R2021a: バリアント ブロックをもつモデル内の Variants
オプションおよび MatchFilter
オプションをもつ find_mdlrefs
の既定の動作を変更
R2021a での動作変更
Variants
:Variants
オプションを指定 "しないで" 関数find_mdlrefs
を使用すると、既定で、シミュレーション中またはコード生成中にアクティブである Model ブロックのみが検索に含まれます。2 つのバリアントの選択肢
Mdl_Linear_ Controller
およびMdl_NonLinear_Controller
をもつ Variant Model ブロックをもつモデルについて検討します。このコマンドは、モデル内のアクティブな Model ブロックのみを返します。
[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
:MatchFilter
オプションを指定した関数find_mdlrefs
を使用すると、既定で、アクティブおよび非アクティブなバリアントの選択肢に対するフィルターを適用します。2 つのバリアントの選択肢
Mdl_Linear_ Controller
およびMdl_NonLinear_Controller
をもつ Variant Model ブロックをもつモデルについて検討します。フィルター関数initFcnMdlBlocks
は、InitFcn
コールバックが設定されている Model ブロックをすべて検索します。function match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle, 'InitFcn')); end
このコマンドは、モデル内のアクティブおよび非アクティブな Model ブロックの両方を返します。
[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
では、Variants
オプションと共にMatchFilter
を使用することはサポートされません。このコマンドではエラーが発生します。
find_mdlrefs(bdroot,'MatchFilter',@Simulink.match.activeVariants,... 'Variants','ActiveVariants');
R2020b: logical 値を find_mdlrefs
の 2 番目の引数として指定することは推奨されない
R2020b 以降は非推奨
関数 find_mdlrefs
では、モデルの階層構造のすべてのレベルを検索するかどうかを指定する方法が 2 つあります。どちらの方法でも同じ結果になりますが、追加のオプションを指定できるのは名前と値のペアの手法のみです。
モデルの階層構造のすべてのレベルを検索するかどうかを指定せずに、logical を 2 番目の引数として使用して名前と値のペア AllLevels
を使用します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)