Simulink.FindOptions
モデルおよびサブシステムのブロックを検索するオプションを指定
説明
Simulink.FindOptions オブジェクトを使用すると、関数 Simulink.findBlocks および Simulink.findBlocksOfType による検索を制約できます。
作成
プロパティ
比較時に大文字と小文字を区別するオプション。'CaseSensitive' と true または false で構成されるコンマ区切りのペアとして指定します。
データ型: logical
モデルで参照サブシステム内を確認し、'LookInsideSubsystemReference' と true または false で構成されるコンマ区切りのペアとして指定された子ブロックをリストするオプションです。
モデルのブロック内を検索して子ブロックをリストするオプション。true または false として指定します。
ライブラリ ブロック内へリンクをたどるオプション。'FollowLinks' と true または false で構成されるコンマ区切りのペアとして指定します。検索するモデルを指定しない場合、'FollowLinks' が true または false のどちらに設定されても、find_system の結果には読み込まれたライブラリが含まれます。'FollowLinks' を 'LookUnderMasks' と共に使用すると、サブシステムでライブラリ リンクを更新できます。サブシステムのライブラリ リンクを更新するを参照してください。
データ型: logical
コメント化されたブロックを検索に含めるオプション。'IncludeCommented' と true または false で構成されるコンマ区切りのペアとして指定します。
データ型: logical
部分的に読み込まれた任意のモデルを読み込むオプション。'LoadFullyIfNeeded' と、モデルを読み込む true または読み込みを無効にする false で構成されるコンマ区切りのペアとして指定します。たとえば、読み込み関連の警告が表示されるのを防ぐために、このオプションを使用します。
マスク内を検索するオプション。'LookUnderMasks' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
'none'— マスク サブシステムを検索しません。'all'— すべてのマスク サブシステムを検索します。'functional'— 検索には、パラメーター、説明、ヘルプ文字列、および UI 要素をもたず、アイコンを描画するコマンドまたはマスク初期化コマンドをもつマスク サブシステムが含まれます。'graphical'— 検索には、ワークスペース、ダイアログ、ヘルプ文字列、UI 要素をもたず、アイコンを描画するコマンドのみをもつマスク サブシステムが含まれます。
データ型: char | string
検索式を正規表現として取り扱うオプション。'RegExp' と true または false で構成されるコンマ区切りのペアとして指定します。'RegExp' が true に設定されている場合、検索では検索式が正規表現として取り扱われます。MATLAB® 正規表現の詳細については、正規表現を参照してください。
データ型: logical
指定されたレベルに検索の深さを限定するオプション。'SearchDepth' と正の整数の文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。たとえば、読み込まれたモデルのみを検索する場合は 0、モデルの階層構造の最上位のブロックおよびサブシステムを検索する場合は 1、モデルの階層構造の最上位とその子を検索する場合は 2 を指定します。既定値 -1 では、すべてのレベルを検索します。
データ型: int32
メモ
Variants 引数は削除される予定です。代わりに MatchFilter を使用してください。詳細については、バージョン履歴を参照してください。
バリアントを検索するオプション。'Variants' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
'ActiveVariants'— Variant Subsystem 内のアクティブなバリアントの選択のみを検索します。'AllVariants'— Variant Subsystem 内のすべてのバリアントの選択を検索します。'ActivePlusCodeVariants'— シミュレーション内でアクティブであり、生成されたコードの一部である Variant Subsystem 内のすべてのバリアントの選択肢を検索します。
この検索条件は、[バリアント制御モード] が expression または label に設定されている Variant Subsystem ブロックにのみ適用されます。MatchFilter オプションを指定して関数 find_system を使用すると、すべてのタイプのバリアント ブロックについて動作します。
データ型: char | string
検索でブロック、モデル、ライン、端子、注釈などの要素を照合してフィルターを適用するオプション。関数ハンドルとして指定します。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 フィルターを使用します。
例
検索の深さ 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); 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 で導入モデルと参照のブロック内の検索を有効にするには、LookUnderModelBlocks プロパティを true に設定します。
組み込みのマッチ フィルター Simulink.match.allVariants を使用して、ブロックがバリアントによってアクティブであるか非アクティブであるかに関係なく、バリアント モデル内のすべてのブロックを検出できます。このフィルターは AllVariants オプションに対する推奨される置き換えです。
| 削除予定 | 推奨される置き換え |
|---|---|
findOptObj= Simulink.FindOptions('Variants', ... 'AllVariants'); | findOptObj= Simulink.FindOptions('MatchFilter', ... @Simulink.match.allVariants); |
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)
検索で要素を照合してフィルター処理するために、カスタム フィルター関数を定義し、MatchFilter オプションに対する値として関数ハンドルを渡すことができます。
シミュレーション内でアクティブであるか生成コードの一部であるバリアント ブロックを検索するには、モデルをコンパイルした後に、組み込みのマッチ フィルター関数 Simulink.match.activeVariants、Simulink.match.codeCompileVariants、および Simulink.match.allVariants を使用します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)