Simulink.FindOptions
モデルおよびサブシステムのブロックを検索するオプションを指定
説明
Simulink.FindOptions
オブジェクトを使用すると、関数 Simulink.findBlocks
および Simulink.findBlocksOfType
による検索を制約できます。
作成
プロパティ
CaseSensitive
— 比較時に大文字と小文字を区別する検索条件オプション
true
(既定値) | false
比較時に大文字と小文字を区別するオプション。'CaseSensitive'
と true
または false
で構成されるコンマ区切りのペアとして指定します。
データ型: logical
LookInsideSubsystemReference
— 参照サブシステム内を確認する検索条件オプション
true
(既定値) | false
モデルで参照サブシステム内を確認し、'LookInsideSubsystemReference'
と true
または false
で構成されるコンマ区切りのペアとして指定された子ブロックをリストするオプションです。
FollowLinks
— ライブラリ ブロック内へリンクをたどる検索条件オプション
false
(既定値) | true
ライブラリ ブロック内へリンクをたどるオプション。'FollowLinks'
と true
または false
で構成されるコンマ区切りのペアとして指定します。検索するモデルを指定しない場合、'FollowLinks'
が true
または false
のどちらに設定されても、find_system
の結果には読み込まれたライブラリが含まれます。'FollowLinks'
を 'LookUnderMasks'
と共に使用すると、サブシステムでライブラリ リンクを更新できます。サブシステムのライブラリ リンクを更新するを参照してください。
データ型: logical
IncludeCommented
— コメント化されたブロックを含める検索条件オプション
true
(既定値) | false
コメント化されたブロックを検索に含めるオプション。'IncludeCommented'
と true
または false
で構成されるコンマ区切りのペアとして指定します。
データ型: logical
LoadFullyIfNeeded
— 部分的に読み込まれた任意のモデルを読み込む検索条件オプション
true
(既定値) | false
部分的に読み込まれた任意のモデルを読み込むオプション。'LoadFullyIfNeeded'
と、モデルを読み込む true
または読み込みを無効にする false
で構成されるコンマ区切りのペアとして指定します。たとえば、読み込み関連の警告が表示されるのを防ぐために、このオプションを使用します。
LookUnderMasks
— マスク内を検索する検索条件オプション
'all'
(既定値) | 'none'
| 'functional'
| 'graphical'
マスク内を検索するオプション。'LookUnderMasks'
と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
'none'
— マスク サブシステムを検索しません。'all'
— すべてのマスク サブシステムを検索します。'functional'
— 検索には、パラメーター、説明、ヘルプ文字列、および UI 要素をもたず、アイコンを描画するコマンドまたはマスク初期化コマンドをもつマスク サブシステムが含まれます。'graphical'
— 検索には、ワークスペース、ダイアログ、ヘルプ文字列、UI 要素をもたず、アイコンを描画するコマンドのみをもつマスク サブシステムが含まれます。
データ型: char
| string
RegExp
— 検索式を正規表現として取り扱う検索条件オプション
false
(既定値) | true
検索式を正規表現として取り扱うオプション。'RegExp'
と true
または false
で構成されるコンマ区切りのペアとして指定します。'RegExp'
が true
に設定されている場合、検索では検索式が正規表現として取り扱われます。MATLAB® 正規表現の詳細については、正規表現を参照してください。
データ型: logical
SearchDepth
— 検索の深さを限定する検索条件オプション
-1
(既定値) | 正の整数
指定されたレベルに検索の深さを限定するオプション。'SearchDepth'
と正の整数の文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。たとえば、読み込まれたモデルのみを検索する場合は 0
、モデルの階層構造の最上位のブロックおよびサブシステムを検索する場合は 1
、モデルの階層構造の最上位とその子を検索する場合は 2
を指定します。既定値 -1
では、すべてのレベルを検索します。
データ型: int32
Variants
— バリアントを検索する検索条件オプション
'AllVariants'
(既定値) | 'ActiveVariants'
| 'ActivePlusCodeVariants'
メモ
Variants
引数は削除される予定です。代わりに MatchFilter
を使用してください。詳細については、互換性についての考慮事項を参照してください。
バリアントを検索するオプション。'Variants'
と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
'ActiveVariants'
— Variant Subsystem 内のアクティブなバリアントの選択のみを検索します。'AllVariants'
— Variant Subsystem 内のすべてのバリアントの選択を検索します。'ActivePlusCodeVariants'
— シミュレーション内でアクティブであり、生成されたコードの一部である Variant Subsystem 内のすべてのバリアントの選択肢を検索します。
この検索条件は、[バリアント制御モード] が expression
または label
に設定されている Variant Subsystem ブロックにのみ適用されます。MatchFilter
オプションを指定して関数 find_system
を使用すると、すべてのタイプのバリアント ブロックについて動作します。
データ型: 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
フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。
これらのフィルターのコンパイル前とコンパイル後の結果を比較した例については、Use find_system with Built-In MatchFilter Options for Variant Blocksを参照してください。
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
フィルターを使用します。
例
検索オプションの指定
検索の深さ 1
を指定する Simulink.FindOptions
オブジェクトを作成します。
f = Simulink.FindOptions('SearchDepth',1);
FindOptions
オブジェクトを使用して、Unlocked
という名前のサブシステム内のすべてのブロックが検索されますが、そのいずれの子も検索されません。
openExample('sldemo_clutch'); bh = Simulink.findBlocks('sldemo_clutch/Unlocked',f);
関数 Simulink.findBlocks
はブロック ハンドルを返します。
ブロック パスを取得するには、関数 getfullname
を使用します。
bp = getfullname(bh)
bp = 20×1 cell array {'sldemo_clutch/Unlocked/Tfmaxk' } {'sldemo_clutch/Unlocked/Tin' } {'sldemo_clutch/Unlocked/Enable' } {'sldemo_clutch/Unlocked/E_Sum' } {'sldemo_clutch/Unlocked/Engine↵Damping' } {'sldemo_clutch/Unlocked/Engine↵Inertia' } {'sldemo_clutch/Unlocked/Engine↵Integrator' } {'sldemo_clutch/Unlocked/Goto' } {'sldemo_clutch/Unlocked/Goto1' } {'sldemo_clutch/Unlocked/Max↵Dynamic↵Friction↵Torque'} {'sldemo_clutch/Unlocked/V_Sum' } {'sldemo_clutch/Unlocked/Vehicle↵Damping' } {'sldemo_clutch/Unlocked/Vehicle↵Inertia' } {'sldemo_clutch/Unlocked/Vehicle↵Integrator' } {'sldemo_clutch/Unlocked/W_Slip' } {'sldemo_clutch/Unlocked/slip direction' } {'sldemo_clutch/Unlocked/w0' } {'sldemo_clutch/Unlocked/w0 ' } {'sldemo_clutch/Unlocked/we' } {'sldemo_clutch/Unlocked/wv' }
カスタム フィルター関数での検索オプションの指定
カスタム フィルター関数で MatchFilter
オプションを使用して、モデル vdp
内で 1
~ 10
の間のゲイン値をもつすべての Gain ブロックを検出します。
カスタム関数は、ファイル gainOneToTen.m
で定義されています。
function match = gainOneToTen(blk) match = false; if strcmp(get_param(blk,'Type'),'block') ... && strcmp(get_param(blk,'BlockType'),'Gain') gainValue = str2double(get_param(blk,'Gain')); match = gainValue >= 1 && gainValue <= 10; end end
関数ハンドルを MatchFilter
引数の値として指定します。
load_system('vdp'); findOptObj = Simulink.FindOptions('MatchFilter',@gainOneToTen); blks = getfullname((Simulink.findBlocks('vdp',findOptObj)));
組み込みフィルター関数でのバリアント ブロックの検索オプションの指定
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
で MatchFilter
オプションを使用して、モデル内のアクティブなバリアントを検出します。
set_param(model,'SimulationCommand','update'); findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.activeVariants); blks = getfullname((Simulink.findBlocks(model,findOptObj)));
Simulink.match.codeCompileVariants
で MatchFilter
オプションを使用して、生成された C コードの一部であるバリアントの選択を検出します。
slexVariantSubsystems([],[],[],'compileForCodegen'); findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.codeCompileVariants); blks = getfullname((Simulink.findBlocks(model,findOptObj))); slexVariantSubsystems([],[],[],'term');
Simulink.match.allVariants
で MatchFilter
オプションを使用して、モデル内のすべてのブロックを検出します。
findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.allVariants);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));
Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices
で MatchFilter
オプションを使用して、シミュレーション内でアクティブであるか、編集時に生成されたコードの一部である Variant Subsystem 選択ブロックを検出します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。
findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));
Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices
で MatchFilter
オプションを使用して、編集時にアクティブな Variant Subsystem 選択ブロックを検出します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。
findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));
バージョン履歴
R2018a で導入R2022a: すべてのバリアント ブロックを検出する新しい組み込みのマッチ フィルター
組み込みのマッチ フィルター Simulink.match.allVariants
を使用して、ブロックがバリアントによってアクティブであるか非アクティブであるかに関係なく、バリアント モデル内のすべてのブロックを検出できます。このフィルターは AllVariants
オプションに対する推奨される置き換えです。
削除予定 | 推奨される置き換え |
---|---|
findOptObj= Simulink.FindOptions('Variants', ... 'AllVariants'); | findOptObj= Simulink.FindOptions('MatchFilter', ... @Simulink.match.allVariants); |
R2021a: Variants
オプションは削除予定
Variants
オプションは将来のリリースで Simulink.FindOptions
から削除されます。Variants
オプションを使用するスクリプトは引き続き動作しますが、警告が出ます。
Simulink.FindOptions
オブジェクトで Variants
引数を使用すると、一貫しない検索結果が出力されます。Simulink.FindOptions
は編集時に使用されますが、すべてのタイプのバリアント ブロックをもつモデルでブロックがアクティブであるかどうかを判定するためにモデルをコンパイルする必要があります。
シミュレーション中またはコード生成中にアクティブであるバリアント ブロックを検索するには、モデルをコンパイルし、Simulink.FindOptions
オブジェクトを MatchFilter
オプションを指定して使用します。
次の表に、Variants
オプションの異なる値について、推奨される置き換えを示します。
削除予定 | 推奨される置き換え |
---|---|
findOptObj= Simulink.FindOptions('Variants', ... 'ActiveVariants'); | set_param(model,'SimulationCommand','update'); findOptObj= Simulink.FindOptions('MatchFilter', ... @Simulink.match.activeVariants); |
findOptObj= Simulink.FindOptions('Variants', ... 'ActivePlusCodeVariants'); | model([], [], [], 'compileForCodegen'); findOptObj = Simulink.FindOptions('MatchFilter', ... @Simulink.match.codeCompileVariants); blks=getfullname((Simulink.findBlocks(model,findOptObj))); model([], [], [], 'term'); |
Simulink.FindOptions
オブジェクトを使用するときに MatchFilter
引数と Variants
引数の両方を指定することはできません。
次のコマンドではエラーが発生します。
f = Simulink.FindOptions('MatchFilter',... @Simulink.match.activeVariants, 'Variants', 'ActiveVariants'); blocks=Simulink.findBlocks('sldemo_variant_subsystems',f)
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)