このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Simulink.FindOptions
モデルおよびサブシステムのブロックを検索するオプションを指定
説明
Simulink.FindOptions
オブジェクトを使用すると、関数 Simulink.findBlocks
および Simulink.findBlocksOfType
による検索を制約できます。
作成
プロパティ
CaseSensitive
— 検索時に大文字小文字を区別するオプション
true
(既定値) | false
検索時に大文字小文字を区別するオプション。大文字小文字を区別する検索の場合は true
、大文字小文字を区別しない検索の場合は false
として指定します。
データ型: logical
FollowLinks
— ライブラリ リンクに従って検索するオプション
false
(既定値) | true
ライブラリ リンクに従って検索するオプション。true
または false
として指定します。true
の場合、検索はライブラリ ブロックへリンクされたものを含みます。
データ型: logical
IncludeCommented
— コメント付きブロックを検索に含めるオプション
true
(既定値) | false
コメント付きブロックを検索に含めるオプション。true
または false
として指定します。
データ型: logical
LookUnderMasks
— マスクされたブロックを検索するオプション
'all'
(既定値) | 'none'
| 'functional'
| 'graphical'
マスクされたブロックを検索するオプション。次として指定します。
'all'
— マスクされたすべてのブロック内を検索します。'none'
— マスクされたシステムでの検索を回避します。'functional'
— ダイアログをもたないマスク サブシステムも検索します。'graphical'
— ワークスペースまたはダイアログをもたないマスク サブシステムも検索します。
データ型: char
| string
Variants
— Variant Subsystem を検索するオプション
'AllVariants'
(既定値) | 'ActiveVariants'
| 'ActivePlusCodeVariants'
メモ
Variants
引数は削除される予定です。代わりに MatchFilter
を使用してください。詳細については、互換性についての考慮事項を参照してください。
Variant Subsystem を検索するオプション。以下として指定します。
'AllVariants'
— すべてのバリアントの選択を検索します。'ActiveVariants'
— アクティブなバリアントの選択のみ検索します。'ActivePlusCodeVariants'
— シミュレーション内でアクティブであり、生成されたコードの一部である Variant Subsystem 内のすべてのバリアントの選択肢を検索します。
この検索条件は、[バリアント制御モード] が expression
または label
に設定されている Variant Subsystem ブロックにのみ適用されます。MatchFilter
オプションを指定して Simulink.FindOptions
オブジェクトを使用すると、すべてのタイプのバリアント ブロックについて動作します。
データ型: char
| string
MatchFilter
— 検索で要素を照合してフィルター処理するオプション
関数ハンドル
検索でブロック、システム、ライン、端子、注釈などの要素を照合してフィルター処理するオプション。関数ハンドルとして指定します。MatchFilter
を使用して、検索で要素を含めるべきか、スキップすべきかどうかを決定します。
このオプションの動作は次のとおりです。
カスタム フィルター関数を使用した要素のフィルター処理を許可する
フィルターに一致しない場合に要素の処理を回避する
ブロック、ライン、または注釈に複雑なフィルターを適用して結果を内部でフィルター処理する
名前付き関数は MATLAB® プログラム ファイル内で定義されていなければなりません。関数は要素のハンドルを入力として取り、2 つの出力を返します。
function [match, prune] = func(element)
入力
element
は処理されているブロックのハンドルです。1 つ目の出力
match
は logical 値です。false
の場合、検索で要素がスキップされます。2 つ目の出力
prune
は、element
がサブシステムである場合にのみ適用される、オプションの logical 値です。既定値はfalse
です。この値がtrue
に設定されている場合、サブシステム全体が検索対象から除外されます。
例: MatchFilter
を使用して、モデル vdp
内で 1
~ 10
の間のゲイン値をもつすべての Gain ブロックを見つけます。
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
load_system('vdp'); findOptObj = Simulink.FindOptions('MatchFilter', @gainOneToTen); blks=getfullname((Simulink.findBlocks('vdp',findOptObj)));
バリアント: Simulink® には、シミュレーション内でアクティブであるか、生成されたコードの一部であるバリアント ブロックを検索するための、次の組み込みマッチ フィルター関数が用意されています。
Simulink.match.activeVariants
— モデルのコンパイル後にシミュレーションでアクティブなブロックを検索するためのフィルター関数Simulink.match.codeCompileVariants
— モデルのコンパイル後に生成されたコードの一部であるブロックを検索するためのフィルター関数Simulink.match.allVariants
— バリアントが原因でブロックがアクティブか非アクティブかに関係なく、すべてのブロックを検索するためのフィルター関数。
メモ
正しい結果を得るには、Simulink.match.activeVariants
フィルターと Simulink.match.codeCompileVariants
フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。
例: Simulink.match.activeVariants
オプションを使用して、モデル内のアクティブなバリアントを検出します。
openExample('simulink_variants/BuiltInMatchFiltersWithfindsystemForVariantBlocksExample'); model='sldemo_variant_subsystems'; load_system(model); assignin('base','VSS_MODE',2); set_param(model, 'SimulationCommand', 'update'); findOptObj= Simulink.FindOptions('MatchFilter', @Simulink.match.activeVariants); blks=getfullname((Simulink.findBlocks(model,findOptObj)))
例: Simulink.match.codeCompileVariants
オプションを使用して、生成された C コードの一部であるバリアントの選択を検出します。
openExample('simulink_variants/BuiltInMatchFiltersWithfindsystemForVariantBlocksExample'); load_system('sldemo_variant_subsystems'); assignin('base','VSS_MODE',2); sldemo_variant_subsystems([], [], [], 'compileForCodegen'); findOptObj = Simulink.FindOptions('MatchFilter', @Simulink.match.codeCompileVariants); blks=getfullname((Simulink.findBlocks('sldemo_variant_subsystems',findOptObj))); sldemo_variant_subsystems([], [], [], 'term');
例: Simulink.match.allVariants()
オプションを使用して、モデル内のすべてのブロックを検出します。
openExample('simulink_variants/BuiltInMatchFiltersWithfindsystemForVariantBlocksExample'); model='sldemo_variant_subsystems'; load_system(model); findOptObj= Simulink.FindOptions('MatchFilter', @Simulink.match.allVariants); blks=getfullname((Simulink.findBlocks(model,findOptObj)))
RegExp
— 検索テキストを正規表現として取り扱うオプション
false
(既定値) | true
検索テキストを正規表現として扱うオプション。true
または false
として指定します。MATLAB 正規表現の詳細については、正規表現を参照してください。
データ型: logical
SearchDepth
— 検索するモデル内のレベル
-1
(既定値) | 正の整数
検索するモデル内のレベル。正の整数として指定します。既定 (-1
) では、すべてのレベルを検索します。次を指定します。
1
— 最上位システム内を検索します。2
— 最上位システムとその子を検索し、3
では 1 つの追加レベルを検索する、というように続いていきます。
データ型: int32
例
検索オプションの指定
検索の深さ 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' }
バージョン履歴
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)