Main Content

Simulink.FindOptions

モデルおよびサブシステムのブロックを検索するオプションを指定

説明

Simulink.FindOptions オブジェクトを使用すると、関数 Simulink.findBlocks および Simulink.findBlocksOfType による検索を制約できます。

作成

説明

f = Simulink.FindOptions は、既定の検索オプションを使用する FindOptions オブジェクトを作成します。

f = Simulink.FindOptions(Name,Value) は、名前と値のペアを使用してプロパティを設定します。たとえば、Simulink.FindOptions('SearchDepth',1) は検索の深さ 1 をもつ FindOptions オブジェクトを作成します。複数の名前と値のペアを指定できます。各プロパティ名を一重引用符で囲みます。

プロパティ

すべて展開する

比較時に大文字と小文字を区別するオプション。'CaseSensitive'true または false で構成されるコンマ区切りのペアとして指定します。

データ型: logical

モデルで参照サブシステム内を確認し、'LookInsideSubsystemReference'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 フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。

これらのフィルターのコンパイル前とコンパイル後の結果を比較した例については、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_systemfind_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 内で 110 の間のゲイン値をもつすべての 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.activeVariantsMatchFilter オプションを使用して、モデル内のアクティブなバリアントを検出します。

set_param(model,'SimulationCommand','update');
findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.activeVariants);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));

Simulink.match.codeCompileVariantsMatchFilter オプションを使用して、生成された C コードの一部であるバリアントの選択を検出します。

slexVariantSubsystems([],[],[],'compileForCodegen');
findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.codeCompileVariants);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));
slexVariantSubsystems([],[],[],'term');

Simulink.match.allVariantsMatchFilter オプションを使用して、モデル内のすべてのブロックを検出します。

findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.allVariants);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));

Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoicesMatchFilter オプションを使用して、シミュレーション内でアクティブであるか、編集時に生成されたコードの一部である Variant Subsystem 選択ブロックを検出します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。

findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));

Simulink.match.legacy.filterOutInactiveVariantSubsystemChoicesMatchFilter オプションを使用して、編集時にアクティブな Variant Subsystem 選択ブロックを検出します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。

findOptObj = Simulink.FindOptions('MatchFilter',@Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices);
blks = getfullname((Simulink.findBlocks(model,findOptObj)));

バージョン履歴

R2018a で導入

すべて展開する