このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
はまだ読み込まれていないモデルを読み込んでから閉じます。
sldemo_mdlref_depgraph
モデルを含むプロジェクトを開きます。
openProject('ModelReferenceHierarchy');
このプロジェクトで sldemo_mdlref_depgraph
モデルが開きます。
読み込まれたモデルを特定するには、関数 find_system
を使用します。
find_system('type','block_diagram')
ans = 2x1 cell
{'simulink_extras' }
{'sldemo_mdlref_depgraph'}
モデルの階層構造内のすべてのモデルを検索するには、関数 find_mdlrefs
を使用します。
find_mdlrefs('sldemo_mdlref_depgraph')
ans = 7x1 cell
{'sldemo_mdlref_heat2cost' }
{'sldemo_mdlref_house' }
{'sldemo_mdlref_F2C' }
{'sldemo_mdlref_outdoor_temp'}
{'sldemo_mdlref_thermostat' }
{'sldemo_mdlref_heater' }
{'sldemo_mdlref_depgraph' }
読み込まれたままのモデルを特定するには、関数 find_system
を使用します。
find_system('type','block_diagram')
ans = 2x1 cell
{'simulink_extras' }
{'sldemo_mdlref_depgraph'}
以前に読み込まれたモデルのみが、読み込まれたままになります。
モデルの階層構造内のすべてのモデルを検索して読み込むには、関数 find_mdlrefs
を使用し、KeepModelsLoaded
を true
に設定します。
find_mdlrefs('sldemo_mdlref_depgraph','KeepModelsLoaded',true); find_system('type','block_diagram')
ans = 8x1 cell
{'sldemo_mdlref_thermostat' }
{'sldemo_mdlref_heater' }
{'sldemo_mdlref_F2C' }
{'sldemo_mdlref_outdoor_temp'}
{'sldemo_mdlref_house' }
{'sldemo_mdlref_heat2cost' }
{'simulink_extras' }
{'sldemo_mdlref_depgraph' }
最上位モデルとすべての参照モデルは読み込まれたままになります。すべての参照モデルが読み込まれている状態では、各参照モデルを開いてその参照モデルが読み込まれるのを待つことなく、モデルの階層構造を移動できます。
カスタム関数を使用した参照モデル検索のフィルター処理
カスタム フィルター関数でMatchFilter引数を使用して、InitFcn
コールバックが定義されているすべての Model ブロックを検索します。
カスタム関数は、ファイル initFcnMdlBlocks.m
で定義されています。
function match = initFcnMdlBlocks(handle) match = ~isempty(get_param(handle,'InitFcn')); end
関数ハンドルを MatchFilter
引数の値として指定します。
load_system('slexVariantMdlRefCondProp'); [models,blocks] = find_mdlrefs('slexVariantMdlRefCondProp','MatchFilter',@initFcnMdlBlocks);
バリアントの組み込みフィルター関数を使用した参照モデル検索のフィルター処理
Simulink.match.activeVariants
モデルのコンパイル後にシミュレーションでアクティブなバリアント ブロックを検索します。
model1='slexVariantMdlRefCondProp'; load_system(model1); set_param(model1,'SimulationCommand','update'); [models,blocks] = find_mdlrefs(model1,'MatchFilter',@Simulink.match.activeVariants);
Simulink.match.codeCompileVariants
モデルのコンパイル後に、生成された C コードの一部であるバリアントの選択を検索します。
assignin('base','VSS_MODE',2); slexVariantMdlRefCondProp([],[],[],'compileForCodegen');
### Starting serial model reference code generation build. ### Checking status of model reference code generation target for model 'slexVariantMdlRefCondProp_sub1' used in 'slexVariantMdlRefCondProp'. ### Model reference code generation target (slexVariantMdlRefCondProp_sub1.c) for model slexVariantMdlRefCondProp_sub1 is out of date because slexVariantMdlRefCondProp_sub1.c does not exist. ### Starting build procedure for: slexVariantMdlRefCondProp_sub1 ### Generating code and artifacts to 'Model specific' folder structure ### Generating code into build folder: /tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub1 ### Invoking Target Language Compiler on slexVariantMdlRefCondProp_sub1.rtw ### Using System Target File: /mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/ert/ert.tlc ### Loading TLC function libraries ....... ### Initial pass through model to cache user defined code ### Caching model source code ................................ ### Writing header file slexVariantMdlRefCondProp_sub1_types.h ### Writing header file slexVariantMdlRefCondProp_sub1.h ### Writing header file rtwtypes.h ### Writing source file slexVariantMdlRefCondProp_sub1.c . ### Writing header file slexVariantMdlRefCondProp_sub1_private.h ### TLC code generation complete (took 7.056s). ### Creating HTML report file index.html ### Saving binary information cache. ### Using toolchain: GNU gcc/g++ | gmake (64-bit Linux) ### Creating '/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub1/slexVariantMdlRefCondProp_sub1.mk' ... ### Building 'slexVariantMdlRefCondProp_sub1_rtwlib': "/mathworks/devel/bat/Bdoc23b/build/matlab/bin/glnxa64/gmake" -f slexVariantMdlRefCondProp_sub1.mk all gcc -c -fwrapv -fPIC -O0 -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DTERMFCN=1 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=0 -DINTEGER_CODE=0 -DMT=0 -DTID01EQ=0 -DMODEL=slexVariantMdlRefCondProp_sub1 -DNUMST=1 -DNCSTATES=0 -DHAVESTDIO -DMODEL_HAS_DYNAMICALLY_LOADED_SFCNS=0 -I/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893 -I/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub1 -I/mathworks/devel/bat/Bdoc23b/build/matlab/extern/include -I/mathworks/devel/bat/Bdoc23b/build/matlab/simulink/include -I/mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/src -I/mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/src/ext_mode/common -I/mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/ert -I/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/_sharedutils -o "slexVariantMdlRefCondProp_sub1.o" "/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub1/slexVariantMdlRefCondProp_sub1.c" ### Creating static library ./slexVariantMdlRefCondProp_sub1_rtwlib.a ... ar ruvs ./slexVariantMdlRefCondProp_sub1_rtwlib.a slexVariantMdlRefCondProp_sub1.o ar: creating ./slexVariantMdlRefCondProp_sub1_rtwlib.a a - slexVariantMdlRefCondProp_sub1.o ### Created: ./slexVariantMdlRefCondProp_sub1_rtwlib.a ### Successfully generated all binary outputs. gmake: Nothing to be done for `all'. ### Successful completion of build procedure for: slexVariantMdlRefCondProp_sub1 ### Checking status of model reference code generation target for model 'slexVariantMdlRefCondProp_sub2' used in 'slexVariantMdlRefCondProp'. ### Model reference code generation target (slexVariantMdlRefCondProp_sub2.c) for model slexVariantMdlRefCondProp_sub2 is out of date because slexVariantMdlRefCondProp_sub2.c does not exist. ### Starting build procedure for: slexVariantMdlRefCondProp_sub2 ### Generating code and artifacts to 'Model specific' folder structure ### Generating code into build folder: /tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub2 ### Invoking Target Language Compiler on slexVariantMdlRefCondProp_sub2.rtw ### Using System Target File: /mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/ert/ert.tlc ### Loading TLC function libraries ....... ### Generating TLC interface API for custom data . ### Initial pass through model to cache user defined code . ### Caching model source code ........................................ ### Writing header file slexVariantMdlRefCondProp_sub2_types.h ### Writing header file slexVariantMdlRefCondProp_sub2.h . ### Writing header file variant_defines.h ### Writing source file slexVariantMdlRefCondProp_sub2.c ### Writing header file slexVariantMdlRefCondProp_sub2_private.h ### TLC code generation complete (took 6.245s). ### Creating HTML report file index.html ### Saving binary information cache. ### Using toolchain: GNU gcc/g++ | gmake (64-bit Linux) ### Creating '/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub2/slexVariantMdlRefCondProp_sub2.mk' ... ### Building 'slexVariantMdlRefCondProp_sub2_rtwlib': "/mathworks/devel/bat/Bdoc23b/build/matlab/bin/glnxa64/gmake" -f slexVariantMdlRefCondProp_sub2.mk all gcc -c -fwrapv -fPIC -O0 -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DTERMFCN=1 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=0 -DINTEGER_CODE=0 -DMT=0 -DTID01EQ=0 -DMODEL=slexVariantMdlRefCondProp_sub2 -DNUMST=1 -DNCSTATES=0 -DHAVESTDIO -DMODEL_HAS_DYNAMICALLY_LOADED_SFCNS=0 -I/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893 -I/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub2 -I/mathworks/devel/bat/Bdoc23b/build/matlab/extern/include -I/mathworks/devel/bat/Bdoc23b/build/matlab/simulink/include -I/mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/src -I/mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/src/ext_mode/common -I/mathworks/devel/bat/Bdoc23b/build/matlab/rtw/c/ert -I/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/_sharedutils -o "slexVariantMdlRefCondProp_sub2.o" "/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slprj/ert/slexVariantMdlRefCondProp_sub2/slexVariantMdlRefCondProp_sub2.c" ### Creating static library ./slexVariantMdlRefCondProp_sub2_rtwlib.a ... ar ruvs ./slexVariantMdlRefCondProp_sub2_rtwlib.a slexVariantMdlRefCondProp_sub2.o ar: creating ./slexVariantMdlRefCondProp_sub2_rtwlib.a a - slexVariantMdlRefCondProp_sub2.o ### Created: ./slexVariantMdlRefCondProp_sub2_rtwlib.a ### Successfully generated all binary outputs. gmake: Nothing to be done for `all'. ### Successful completion of build procedure for: slexVariantMdlRefCondProp_sub2 ### Simulink cache artifacts for 'slexVariantMdlRefCondProp_sub1' were created in '/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slexVariantMdlRefCondProp_sub1.slxc'. ### Simulink cache artifacts for 'slexVariantMdlRefCondProp_sub2' were created in '/tmp/Bdoc23b_2355056_1864936/tpf09337a2/simulink_variants-ex24779893/slexVariantMdlRefCondProp_sub2.slxc'. Build Summary Code generation targets built: Model Action Rebuild Reason ================================================================================================================ slexVariantMdlRefCondProp_sub1 Code generated and compiled. slexVariantMdlRefCondProp_sub1.c does not exist. slexVariantMdlRefCondProp_sub2 Code generated and compiled. slexVariantMdlRefCondProp_sub2.c does not exist. 2 of 2 models built (0 models already up to date) Build duration: 0h 0m 48.862s
[models,blocks] = find_mdlrefs(model1,... 'MatchFilter',@Simulink.match.codeCompileVariants); slexVariantMdlRefCondProp([],[],[],'term');
Simulink.match.allVariants
バリアントが原因でブロックがアクティブか非アクティブになっているのかに関係なく、すべてのブロックを検索します。
[models,blocks] = find_mdlrefs(model1,'MatchFilter',@Simulink.match.allVariants);
Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices
シミュレーション内でアクティブであるか、編集時に生成されたコードの一部である Variant Subsystem 選択ブロックを検索します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。
model2='sldemo_mdlref_variants'; load_system(model2); [models,blocks] = find_mdlrefs(model2, ... 'MatchFilter',@Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices)
Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices
編集時にアクティブな Variant Subsystem 選択ブロックを検索します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。
[models,blocks] = find_mdlrefs(model2, ... 'MatchFilter',@Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices)
入力引数
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
— ライブラリ リンクに従って検索するオプション
true
(既定値) | false
ライブラリ リンクに従って検索するオプション。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
に設定されている場合、サブシステム全体が検索対象から除外されます。
バリアント: Simulink® には、バリアント ブロックを検索するための、次の組み込みマッチ フィルター関数が用意されています。
コンパイル後のフィルター関数:
Simulink.match.activeVariants
— モデルのコンパイル後にシミュレーションでアクティブなブロックを検索するためのフィルター関数。Simulink.match.codeCompileVariants
— モデルのコンパイル後に生成されたコードの一部であるブロックを検索するためのフィルター関数。Simulink.match.allVariants
— バリアントが原因でブロックがアクティブか非アクティブかに関係なく、すべてのブロックを検索するためのフィルター関数。
メモ
正しい結果を得るには、Simulink.match.activeVariants
フィルターと Simulink.match.codeCompileVariants
フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。
Variant Subsystem ブロックの編集時フィルターの関数:
Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices
— シミュレーション内でアクティブであるか、生成されたコードの一部である Variant Subsystem 選択ブロックを検索するためのフィルター関数。この関数では、Variants
引数の'ActivePlusCodeVariants'
オプションと同じような結果が生成されます。Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices
— アクティブな Variant Subsystem 選択ブロックを検索するためのフィルター関数。この関数では、Variants
引数の'ActiveVariants'
オプションと同じような結果が生成されます。
編集時フィルター制限:
フィルターは CompiledVariantInfo ブロック パラメーターのコンパイル後のブロックのアクティブ性情報を使用しません。
フィルターは、以下のブロック パラメーターの設定をもつ Variant Subsystem ブロックにのみ適用されます。
[バリアント制御モード] が
[式]
または[ラベル]
に設定されている[Variant Subsystem の外部に条件を伝播する] が
off
に設定されている
フィルターは、
find_system
、find_mdlrefs
、およびSimulink.FindOptions
のコンテキスト内で使用されている場合にのみ、ブロック ハンドルが Variant Subsystem のアクティブな選択肢内にあるかどうかを特定できます。
すべてのタイプのバリアント ブロックに対して処理するには、モデルのコンパイル後に Simulink.match.codeCompileVariants
フィルターまたは Simulink.match.activeVariants
フィルターを使用します。
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 より前に導入R2022b: Variants
引数の削除についての警告
将来のリリースで Variants
引数が削除されることに伴い、次の警告が導入されています。
関数
find_mdlrefs
をVariants
引数なしで使用する場合、関数は検索中に Variant Subsystem ブロックの非アクティブな選択肢をスキップすると警告を生成します。2 つのバリアントの選択肢
Mdl_Linear_Controller
およびMdl_NonLinear_Controller
をもつ Variant Model ブロックをもつモデルについて検討します。Mdl_NonLinear_Controller
ブロックがアクティブな選択肢です。次のコマンドでは、非アクティブな
Mdl_Linear_Controller
ブロックがスキップされ、警告が生成されます。[myModels,myModelBlks] = find_mdlrefs... ('sldemo_variant_subsystems_modelblocks')
Warning: Using find_mdlrefs without the 'Variants' argument skips inactive Variant Subsystem blocks in the search. This behavior will change in a future release to look at all choices of the Variant Subsystem. To find blocks that are active in simulation or code generation, compile the model and use the built-in variant filters with the 'MatchFilter' option. 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'}
Variants
引数を使用する場合、関数はその値が'AllVariants'
に設定されていると警告を生成します。[myModels,myModelBlks] = find_mdlrefs... ('sldemo_variant_subsystems_modelblocks','Variants','AllVariants')
Warning: 'Variants' will be removed. Instead of using 'Variants' with value set to 'AllVariants', use 'MatchFilter' with value set to @Simulink.match.allVariants. myModels = 3×1 cell array {'Linear_Controller' } {'Nonlinear_Controller' } {'sldemo_variant_subsystems_modelblocks'} myModelBlks = 2×1 cell array {'sldemo_variant_subsystems_modelblocks/Controller/Linear Controller' } {'sldemo_variant_subsystems_modelblocks/Controller/Nonlinear Controller'}
R2022a: すべてのバリアント ブロックを検出する新しい組み込みのマッチ フィルター
組み込みのマッチ フィルター Simulink.match.allVariants
を使用して、ブロックがバリアントによってアクティブであるか非アクティブであるかに関係なく、バリアント モデル内のすべてのブロックを検出できます。このフィルターは AllVariants
オプションに対する推奨される置き換えです。
削除予定 | 推奨される置き換え |
---|---|
find_mdlrefs(model,'Variants','AllVariants'); | find_mdlrefs(model,'MatchFilter', ... @Simulink.match.allVariants); |
R2021a: バリアント ブロックをもつモデルでの Variants
引数および MatchFilter
引数の既定の動作を変更
Variants
:関数find_mdlrefs
をVariants
引数なしで使用する場合、Variant Subsystem ブロックについて、既定ではシミュレーション中またはコード生成中にアクティブである選択肢のみが検索に含まれるようになりました。[Variant Subsystem の外部に条件を伝播する] パラメーターが
on
に設定された Variant Source ブロック、Variant Sink ブロック、Variant Subsystem ブロックなどの他のバリアント ブロックについては、すべての選択肢が検索に含まれます。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
:関数find_mdlrefs
でMatchFilter
引数を使用する場合、既定ではアクティブと非アクティブのバリアントの選択肢にフィルターが適用されます。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'}
R2021a: Variants
引数は削除予定
Variants
引数は将来のリリースで find_mdlrefs
から削除されます。Variants
引数を使用する関数呼び出しは引き続き動作しますが、警告が出ます。
関数 find_mdlrefs
で Variants
引数を使用すると、一貫しない検索結果が出力されます。関数 find_mdlrefs
は編集時の操作ですが、すべてのタイプのバリアント ブロックをもつモデルでブロックがアクティブであるかどうかを判定するためにモデルをコンパイルする必要があります。
シミュレーション中またはコード生成中にアクティブである Model ブロックを検索するには、モデルをコンパイルし、関数 find_mdlrefs
を MatchFilter
引数を指定して使用します。
次の表に、Variants
引数の異なる値について、推奨される置き換えを示します。
削除予定 | 推奨される置き換え |
---|---|
find_mdlrefs(model,'Variants', ... 'ActiveVariants'); | set_param(model,'SimulationCommand','update'); find_mdlrefs(model,'MatchFilter', ... @Simulink.match.activeVariants); |
find_mdlrefs(model,'Variants', ... 'ActivePlusCodeVariants'); | model([],[],[],'compileForCodegen'); [models,blocks] = find_mdlrefs(model,'MatchFilter', ... @Simulink.match.codeCompileVariants); model([],[],[],'term'); |
関数 find_system
を使用するときに MatchFilter
引数と Variants
引数の両方を指定することはできません。
次のコマンドではエラーが発生します。
find_mdlrefs(bdroot,'MatchFilter',@Simulink.match.activeVariants,... 'Variants','ActiveVariants');
R2020b: 検索での MatchFilter
を使用した要素のフィルター処理
検索で要素を照合してフィルター処理するために、カスタム フィルター関数を定義し、名前と値の引数 MatchFilter
に対する値として関数ハンドルを渡すことができます。
シミュレーション内でアクティブであるか生成コードの一部であるバリアント ブロックを検索するには、モデルをコンパイルした後に、組み込みのマッチ フィルター関数 Simulink.match.activeVariants
、Simulink.match.codeCompileVariants
、および Simulink.match.allVariants
を使用します。
R2020b: logical 値を find_mdlrefs
の 2 番目の引数として指定することは推奨されない
関数 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)