このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
find_system
モデル、ブロック、ライン、端子、注釈を検索する
構文
説明
は、読み込まれたモデルと、1 つ以上の Objects
= find_system(Name,Value
)Name,Value
のペアの引数で指定された基準を満たすそれらのモデル内のオブジェクトを返します。この構文を使用して検索条件を指定し、特定のパラメーター値を検索できます。検索条件はパラメーターと値のペアの前に指定します。
は、指定されたモデルの指定された基準を満たすオブジェクトを返します。Objects
= find_system(Model
,Name,Value
)
例
読み込まれたモデルおよびライブラリとそのブロックの検索
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
すべての読み込まれたモデルおよびライブラリとそのブロックを検索します。
find_system
ans = 13x1 cell
{'vdp' }
{'vdp/Callback Button'}
{'vdp/Constant' }
{'vdp/Mu' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
特定のモデルとそのブロックの検索
例を開きます。次に、vdp
モデルおよび ex_sldemo_clutch
モデルを読み込みます。
load_system({'vdp','ex_sldemo_clutch'})
vdp
モデルとそのブロックを検索します。
find_system('vdp')
ans = 13x1 cell
{'vdp' }
{'vdp/Callback Button'}
{'vdp/Constant' }
{'vdp/Mu' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
読み込まれたモデル、サブシステム、およびライブラリの検索
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
すべての読み込まれたモデル、サブシステム、およびライブラリを検索します。サブシステム名は、サブシステムを個別に読み込むことができる場合にのみ返されます。
find_system('type','block_diagram')
ans = 1x1 cell array
{'vdp'}
サブシステムの子を検索する
例を開きます。次に、ex_sldemo_clutch
モデルを読み込みます。
load_system('ex_sldemo_clutch')
ex_sldemo_clutch
モデル内の Unlocked
サブシステムの子であるすべての Goto ブロックの名前を返します。
find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')
ans = 2x1 cell
{'ex_sldemo_clutch/Unlocked/Goto' }
{'ex_sldemo_clutch/Unlocked/Goto1'}
複数の基準を使用して検索する
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
vdp
モデル内で以下の 2 つの条件を満たしているブロックを検索します。
Integrator ブロックである。
[初期条件] の値が 0 である。
find_system('vdp','BlockType','Integrator','InitialCondition','0')
ans = 1x1 cell array
{'vdp/x2'}
ラインおよび注釈の検索
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
関数 find_system
を使用して vdp
モデルでラインを検索します。検索にラインを含めるには、'FindAll'
を 'on'
として指定します。
l = find_system('vdp','FindAll','on','type','line')
l = 18×1
389.0072
388.0065
387.0063
385.0054
384.0057
383.0067
382.0065
381.0072
380.0071
379.0065
⋮
関数 find_system
を使用して vdp
モデル内の注釈を検索します。検索に注釈を含めるには、'FindAll'
を 'on'
として指定します。
an = find_system('vdp','FindAll','on','type','annotation')
an = 3×1
392.0056
391.0059
390.0065
特定のブロック パラメーター値を検索する
例を開きます。次に、vdp
モデルおよび f14
モデルを読み込みます。
models={'vdp','f14'}; load_system(models)
vdp
モデルおよび f14
モデルで値が 3
である Block Dialog
ボックス パラメーターをもつブロックを検索します。
find_system(models,'BlockDialogParams','3')
ans = 3x1 cell
{'vdp/Square' }
{'f14/Aircraft...' }
{'f14/Controller/q (rad//sec)'}
正規表現を使用して検索する
例を開きます。次に、ex_sldemo_clutch
モデルおよび vdp
モデルを読み込みます。
load_system({'ex_sldemo_clutch','vdp'})
3
で始まる [ブロック パラメーター] ダイアログ ボックス パラメーター値をもつ、現在読み込まれているモデルの最上位にあるすべてのブロックを検索します。
find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 2x1 cell
{'vdp/Square' }
{'ex_sldemo_clutch/w'}
部分一致の正規表現検索
正規表現を使用して検索する場合は、一致させる文字ベクトルの一部を指定して、その文字ベクトルが含まれるすべてのオブジェクトを返すことができます。
ex_sldemo_clutch
モデル内のすべての Integrator ブロックを検索します。
load_system('ex_sldemo_clutch'); ports=find_system('ex_sldemo_clutch','regexp','on','blocktype','Integrator')
ports = 3x1 cell
{'ex_sldemo_clutch/Locked/Engine//Vehicle...'}
{'ex_sldemo_clutch/Unlocked/Engine...' }
{'ex_sldemo_clutch/Unlocked/Vehicle...' }
サブシステムのライブラリ リンクを更新する
ライブラリ リンクである単一のサブシステムを含む myModel
という名前のモデルがあるとします。モデルが最後に開かれた後に、ライブラリ内の対応するサブシステムに Gain ブロックが追加されています。
モデルを開きます。find_system
を、'off'
に設定した 'FollowLinks'
と共に使用します。このコマンドは、サブシステムへのライブラリ リンクに従わず、最上位のサブシステムのみを返します。
open_system('myModel') find_system(bdroot,'LookUnderMasks','all','FollowLinks', 'off')
ans = 'myModel' 'myModel/Subsystem'
find_system
を、'on'
に設定した 'FollowLinks'
と共に使用します。find_system
はライブラリ リンクを更新し、サブシステムのブロックを返します。
find_system(bdroot,'LookUnderMasks','all','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain Updating Link: myModel/Subsystem/Gain ans = 'myModel' 'myModel/Subsystem' 'myModel/Subsystem/Gain'
値をハンドルとして返す
関数の処理対象のモデルまたはブロックを指定する必要がある複数の関数呼び出しを行う場合、モデルまたはブロックを指定するためにファイル パスではなくハンドルを使用します。
関数 find_system
の複数の呼び出しでハンドルとして vdp model
を指定します。
例を開きます。次に、vdp
モデルを読み込みます。
load_system('vdp')
vdp
モデルのハンドルを取得します。
h = get_param('vdp','Handle')
h = 152.0001
vdp
モデルで値が 0
である [ブロック パラメーター] ダイアログ ボックス パラメーターを検索します。vdp
モデルのハンドルとして検索するモデルを指定します。
find_system(h,'BlockDialogParams','0')
ans = 8×1
279.0001
279.0001
287.0001
329.0001
332.0001
332.0001
334.0001
334.0001
vdp
モデルで値が 3
で始まる [ブロック パラメーター] ダイアログ ボックス パラメーター値をもつブロック パラメーターを検索します。vdp
モデルのハンドルとして検索するモデルを指定します。
find_system(h,'regexp','on','BlockDialogParams','^3')
ans = 290.0001
vdp
モデルでブロック名に文字ベクトル 'port'
が含まれているブロックを検索します。vdp
モデルのハンドルとして検索するモデルを指定します。
find_system(h,'regexp','on','blocktype','port')
ans = 2×1
332.0001
334.0001
カスタム関数を使用した検索のフィルター処理
カスタム フィルター関数でMatchFilter引数を使用して、vdp
モデルで Inport ブロックおよび Outport ブロック以外のブロックを検索します。
この例のカスタム関数は、ファイル nonInOutBlocks.m
で定義されています。
function match = nonInOutBlocks(handle) match = true; if strcmp(get_param(handle,'Type'),'block') blockType = get_param(handle,'BlockType'); if strcmp(blockType,'Inport') || strcmp(blockType,'Outport') match = false; end end end
関数ハンドルを MatchFilter
引数の値として指定します。
load_system('vdp'); blks = find_system('vdp','MatchFilter',@nonInOutBlocks);
組み込みフィルター関数を使用したバリアント ブロックの検索
slexVariantSubsystems
モデルを読み込みます。
model = 'slexVariantSubsystems';
load_system(model);
VSS_LINEAR_CONTROLLER = VariantExpression with properties: Condition: 'VSS_MODE==1'
VSS_NONLINEAR_CONTROLLER = VariantExpression with properties: Condition: 'VSS_MODE==2'
VSS_MODE = 2
assignin('base','VSS_MODE',2);
関数 Simulink.match.activeVariants
を使用して、モデルのコンパイル後にシミュレーションでアクティブなバリアント ブロックを検索します。
set_param(model,'SimulationCommand','update'); find_system(model,'MatchFilter',@Simulink.match.activeVariants);
関数 Simulink.match.codeCompileVariants
を使用して、モデルのコンパイル後に、生成された C コードの一部であるバリアントの選択を検索します。
slexVariantSubsystems([],[],[],'compileForCodegen'); find_system(model,'MatchFilter',@Simulink.match.codeCompileVariants); slexVariantSubsystems([],[],[],'term');
関数 Simulink.match.allVariants
を使用して、バリアントが原因でブロックがアクティブか非アクティブかに関係なく、すべてのブロックを検索します。
find_system(model,'MatchFilter',@Simulink.match.allVariants);
関数 Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoice
を使用して、シミュレーション内でアクティブであるか、編集時に生成されたコードの一部である Variant Subsystem 選択ブロックを検索します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。
find_system(model, ... 'MatchFilter',@Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices);
関数 Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices
を使用して、編集時にアクティブな Variant Subsystem 選択ブロックを検索します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。
find_system(model, ... 'MatchFilter', @Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices);
関数 Simulink.match.variantAssemblySubsystems
を使用して、slexVariantAssemblySubsystemWithMaskInLabel
モデル内のすべての Variant Assembly Subsystem ブロックを検索します。
load_system('slexVariantAssemblySubsystemWithMaskInLabel'); find_system('slexVariantAssemblySubsystemWithMaskInLabel','MatchFilter',@Simulink.match.variantAssemblySubsystems);
入力引数
Model
— 検索するモデル
パス名 | パス名の cell 配列 | ハンドル | インデックスのベクトル
検索するモデル。モデルの絶対パス名、モデルのパス名の cell 配列、ハンドル、ハンドルのベクトルとして指定します。
例: 'MyModel/Subsystem1'
例: {'vdp','ex_sldemo_clutch'}
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'SearchDepth','0','LookUnderMasks','none','BlockType','Goto'
は、マスク サブシステムを除く、読み込まれたモデルで Goto ブロックを検索します。
関数 find_system
を使用する場合、Name,Value
のペアの引数には以下を含めることができます。
'CaseSensitive','on'
など、条件のオプションと値のペアとして指定した検索条件'BlockType','Gain'
など、パラメーターの名前と値のペアとして指定したパラメーター値
検索条件の引数のペアは任意の順序で指定でき、パラメーター値の引数のペアも任意の順序で指定できますが、検索条件の引数のペアはパラメーター値の引数のペアの前に指定しなければなりません。
ブロック パラメーターのリストの詳細については、ブロック固有のパラメーターを参照してください。
BlockDialogParams
— 指定された値のブロック パラメーターを検索する検索条件オプション
文字ベクトル | string スカラー
指定された値のブロック ダイアログ ボックス パラメーターを検索するオプション。'BlockDialogParams'
と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。このペアは他の検索条件のペアに従わなければなりません。
CaseSensitive
— 比較時に大文字と小文字を区別する検索条件オプション
'on'
(既定値) | 'off'
比較時に大文字と小文字を区別するオプション。'CaseSensitive'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。
FindAll
— モデル内のライン、端子、注釈を含める検索条件オプション
'off'
(既定値) | 'on'
モデルのライン、端子、注釈を検索に含めるオプション。'FindAll'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。このオプションが 'on'
に設定されている場合、Model
引数をモデルの絶対パス名、モデルのパス名の cell 配列、ハンドル、ハンドルのベクトルのいずれとして指定したかに関係なく、find_system
はハンドルのベクトルを返します。
Type
— 特定のタイプのブロック パラメーターを検索する検索条件オプション
'block'
(既定値) | 'line'
| 'port'
| 'annotation'
特定のタイプの結果のみを返すオプション。'Type'
と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
'block'
'line'
'port'
'annotation'
モデルのライン、端子、または注釈を検索するには、まず FindAll
の値を 'on'
として指定してから、タイプを指定する必要があります。たとえば、myModel
という名前のモデルで注釈を検索するには、コマンド ラインで以下のコマンドを入力します。
find_system('myModel','FindAll','on','Type','annotation')
FirstResultOnly
— 最初の結果のみを返す検索条件オプション
'off'
(既定値) | 'on'
最初の結果のみを返して検索を停止するオプション。'FirstResultOnly'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。
LookInsideSubsystemReference
— 参照サブシステム内を確認する検索条件オプション
'on'
(既定値) | 'off'
モデルで参照サブシステム内を確認し、'LookInsideSubsystemReference'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定された子ブロックをリストするオプションです。
FollowLinks
— ライブラリ ブロック内へリンクをたどる検索条件オプション
'off'
(既定値) | 'on'
ライブラリ ブロック内へリンクをたどるオプション。'FollowLinks'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。検索するモデルを指定しない場合、'FollowLinks'
が 'on'
または 'off'
のどちらに設定されても、find_system
の結果には読み込まれたライブラリが含まれます。'FollowLinks'
を 'LookUnderMasks'
と共に使用すると、サブシステムでライブラリ リンクを更新できます。サブシステムのライブラリ リンクを更新するを参照してください。
IncludeCommented
— コメント化されたブロックを含める検索条件オプション
'off'
(既定値) | 'on'
コメント化されたブロックを検索に含めるオプション。'IncludeCommented'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。
LoadFullyIfNeeded
— 部分的に読み込まれた任意のモデルを読み込む検索条件オプション
'on'
(既定値) | 'off'
部分的に読み込まれた任意のモデルを読み込むオプション。'LoadFullyIfNeeded'
と、モデルを読み込む 'on'
または読み込みを無効にする 'off'
で構成されるコンマ区切りのペアとして指定します。たとえば、読み込み関連の警告が表示されるのを防ぐために、このオプションを使用します。
LookUnderMasks
— マスク内を検索する検索条件オプション
'graphical'
(既定値) | 'none'
| 'functional'
| 'all'
マスク内を検索するオプション。'LookUnderMasks'
と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
'none'
— マスク サブシステムを検索しません。'all'
— すべてのマスク サブシステムを検索します。'functional'
— 検索には、パラメーター、説明、ヘルプ文字列、および UI 要素をもたず、アイコンを描画するコマンドまたはマスク初期化コマンドをもつマスク サブシステムが含まれます。'graphical'
— 検索には、ワークスペース、ダイアログ、ヘルプ文字列、UI 要素をもたず、アイコンを描画するコマンドのみをもつマスク サブシステムが含まれます。
メモ
オプション 'none'
は以前のオプション 'off'
に置き換わるものです。オプション 'all'
は以前のオプション 'on'
に置き換わるものです。
RegExp
— 検索式を正規表現として取り扱う検索条件オプション
'off'
(既定値) | 'on'
検索式を正規表現として取り扱うオプション。'RegExp'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。'RegExp'
が 'on'
に設定されている場合、検索では検索式が正規表現として取り扱われます。MATLAB® 正規表現の詳細については、正規表現を参照してください。
SearchDepth
— 検索の深さを限定する検索条件オプション
正の整数の文字ベクトルまたは string スカラー
指定されたレベルに検索の深さを限定するオプション。'SearchDepth'
と正の整数の文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。たとえば、読み込まれたモデルのみを検索する場合は '0'
、モデルの階層構造の最上位のブロックおよびサブシステムを検索する場合は '1'
、モデルの階層構造の最上位とその子を検索する場合は '2'
を指定します。既定では、すべてのレベルを検索します。
Variants
— バリアントを検索する検索条件オプション
'ActiveVariants'
(既定値) | 'AllVariants'
| 'ActivePlusCodeVariants'
メモ
Variants
引数は削除される予定です。代わりに MatchFilter
を使用してください。詳細については、バージョン履歴を参照してください。
バリアントを検索するオプション。'Variants'
と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
'ActiveVariants'
— Variant Subsystem 内のアクティブなバリアントの選択のみを検索します。'AllVariants'
— Variant Subsystem 内のすべてのバリアントの選択を検索します。'ActivePlusCodeVariants'
— シミュレーション内でアクティブであり、生成されたコードの一部である Variant Subsystem 内のすべてのバリアントの選択肢を検索します。
この検索条件は、[バリアント制御モード] が expression
または label
に設定されている Variant Subsystem ブロックにのみ適用されます。MatchFilter
オプションを指定して関数 find_system
を使用すると、すべてのタイプのバリアント ブロックについて動作します。
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.variantAssemblySubsystems
— すべての Variant Assembly Subsystem ブロックを検索するためのフィルター関数。
メモ
正しい結果を得るには、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
フィルターを使用します。
出力引数
Objects
— 一致するオブジェクト
パス名の cell 配列 | インデックスのベクトル
見つかった一致するオブジェクト。パス名の cell 配列またはハンドルのベクトルとして返されます。
以下の条件の両方が満たされている場合、見つかったオブジェクトはパス名の cell 配列として返されます。
検索条件オプション
FindAll
が既定値'off'
に設定されている。Model
をパス名またはパス名の cell 配列として指定するか、モデルを指定しなかった。
以下の条件の 1 つ以上が満たされている場合、見つかったオブジェクトはハンドルのベクトルとして返されます。
FindAll
の値を'on'
に設定した。Model
をハンドルまたはハンドルのベクトルとして指定した。
バージョン履歴
R2006a より前に導入R2022b: Variants
引数の削除についての警告
将来のリリースで Variants
引数が削除されることに伴い、次の警告が導入されています。
関数
find_system
をVariants
引数なしで使用する場合、関数は検索中に Variant Subsystem ブロックの非アクティブな選択肢をスキップすると警告を生成します。2 つのバリアントの選択肢
Linear Controller
およびNonlinear Controller
をもつ Variant Subsystem ブロックをもつモデルについて検討します。Nonlinear Controller
ブロックがアクティブな選択肢です。次のコマンドでは、非アクティブな
Linear Controller
ブロックがスキップされ、警告が生成されます。blocks = find_system('sldemo_variant_subsystems/Controller')
Warning: Using find_system 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 thatare active in simulation or code generation, compile the model and use the built-in variant filters with the 'MatchFilter' option. blocks = 12×1 cell array {'sldemo_variant_subsystems/Controller' } {'sldemo_variant_subsystems/Controller/sensor1' } {'sldemo_variant_subsystems/Controller/sensor2' } {'sldemo_variant_subsystems/Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor1' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor2' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/1-D Lookup Table'} {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Out1' } {'sldemo_variant_subsystems/Controller/Out1' }
Variants
引数を使用する場合、関数はその値が'AllVariants'
に設定されていると警告を生成します。blocks = find_system('sldemo_variant_subsystems/Controller',... '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. blocks = 19×1 cell array {'sldemo_variant_subsystems/Controller' } {'sldemo_variant_subsystems/Controller/sensor1' } {'sldemo_variant_subsystems/Controller/sensor2' } {'sldemo_variant_subsystems/Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Linear Controller' } {'sldemo_variant_subsystems/Controller/Linear Controller/sensor1' } {'sldemo_variant_subsystems/Controller/Linear Controller/sensor2' } {'sldemo_variant_subsystems/Controller/Linear Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Linear Controller/Add' } {'sldemo_variant_subsystems/Controller/Linear Controller/Discrete↵Transfer Fcn'} {'sldemo_variant_subsystems/Controller/Linear Controller/Out1' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor1' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor2' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/1-D Lookup Table' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Out1' } {'sldemo_variant_subsystems/Controller/Out1' }
R2022a: すべてのバリアント ブロックを検出する新しい組み込みのマッチ フィルター
組み込みのマッチ フィルター Simulink.match.allVariants
を使用して、ブロックがバリアントによってアクティブであるか非アクティブであるかに関係なく、バリアント モデル内のすべてのブロックを検出できます。このフィルターは AllVariants
オプションに対する推奨される置き換えです。
削除予定 | 推奨される置き換え |
---|---|
find_system(model,'Variants', ... 'AllVariants'); | find_system(model,'MatchFilter', ... @Simulink.match.allVariants); |
R2021a: バリアント ブロックをもつモデルでの Variants
引数および MatchFilter
引数の既定の動作を変更
Variants
:関数find_system
をVariants
引数を指定せずに使用する場合、既定では Variant Subsystem ブロックのアクティブなバリアントの選択肢のみが検索に含まれるようになりました。[Variant Subsystem の外部に条件を伝播する] パラメーターが
on
に設定された Variant Source ブロック、Variant Sink ブロック、Variant Subsystem ブロックなどの他のバリアント ブロックについては、すべての選択肢が検索に含まれます。2 つのバリアントの選択肢
Linear Controller
およびNonlinear Controller
をもつ Variant Subsystem をもつモデルについて検討します。このコマンドは、モデル内のアクティブな Add ブロックのみを返します。
add_blocks = find_system('sldemo_variant_subsystems/Controller',... 'BlockType','Sum')
add_blocks = 1×1 cell array {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add'}
MatchFilter
:関数find_system
でMatchFilter
引数を使用する場合、既定ではアクティブと非アクティブのバリアントの選択肢にフィルターが適用されます。2 つのバリアントの選択肢
Linear Controller
およびNonlinear Controller
をもつ Variant Subsystem をもつモデルについて検討します。フィルター関数findAddBlocks
は、モデル内のすべての Add ブロックを検索します。function match = findAddBlocks(handle) match = strcmp(get_param(handle, 'Type'), 'block') &&... strcmp(get_param(handle, 'BlockType'), 'Sum'); end
次のコマンドでは、モデル内のアクティブと非アクティブの Add ブロックが返されます。
add_blocks = find_system('sldemo_variant_subsystems','MatchFilter',... @findAddBlocks)
add_blocks = 2×1 cell array {'sldemo_variant_subsystems/Controller/Linear Controller/Add' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add'}
R2021a: Variants
引数は削除予定
Variants
引数は将来のリリースで find_system
から削除されます。Variants
引数を使用する関数呼び出しは引き続き動作しますが、警告が出ます。
関数 find_system
で Variants
引数を使用すると、一貫しない検索結果が出力されます。関数 find_system
は編集時の操作ですが、すべてのタイプのバリアント ブロックをもつモデルでブロックがアクティブであるかどうかを判定するためにモデルをコンパイルする必要があります。
シミュレーション中またはコード生成中にアクティブであるバリアント ブロックを検索するには、"モデルをコンパイル" し、関数 find_system
を MatchFilter
引数を指定して使用します。
次の表に、Variants
引数の異なる値について、推奨される置き換えを示します。
削除予定 | 推奨される置き換え |
---|---|
find_system(model,'Variants', ... 'ActiveVariants'); | set_param(model,'SimulationCommand','update'); find_system(model,'MatchFilter', ... @Simulink.match.activeVariants); |
find_system(model,'Variants', ... 'ActivePlusCodeVariants'); | model([], [], [], 'compileForCodegen'); activeBlks= find_system(model,'MatchFilter', ... @Simulink.match.codeCompileVariants); model([], [], [], 'term'); |
関数 find_system
を使用するときに MatchFilter
引数と Variants
引数の両方を指定することはできません。
次のコマンドではエラーが発生します。
find_system(bdroot,'MatchFilter',@Simulink.match.activeVariants,... 'Variants','ActiveVariants');
R2020b: 検索での MatchFilter
を使用した要素のフィルター処理
検索で要素を照合してフィルター処理するために、カスタム フィルター関数を定義し、名前と値の引数 MatchFilter
に対する値として関数ハンドルを渡すことができます。
シミュレーション内でアクティブであるか生成コードの一部であるバリアント ブロックを検索するには、モデルをコンパイルした後に、組み込みのマッチ フィルター関数 Simulink.match.activeVariants
、Simulink.match.codeCompileVariants
、および Simulink.match.allVariants
を使用します。
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)