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 オブジェクトを作成します。複数の名前と値のペアを指定できます。各プロパティ名を一重引用符で囲みます。

プロパティ

すべて展開する

検索時に大文字小文字を区別するオプション。大文字小文字を区別する検索の場合は true、大文字小文字を区別しない検索の場合は false として指定します。

データ型: logical

ライブラリ リンクに従って検索するオプション。true または false として指定します。true の場合、検索はライブラリ ブロックへリンクされたものを含みます。

データ型: logical

コメント付きブロックを検索に含めるオプション。true または false として指定します。

データ型: logical

マスクされたブロックを検索するオプション。次として指定します。

  • 'all' — マスクされたすべてのブロック内を検索します。

  • 'none' — マスクされたシステムでの検索を回避します。

  • 'functional' — ダイアログをもたないマスク サブシステムも検索します。

  • 'graphical' — ワークスペースまたはダイアログをもたないマスク サブシステムも検索します。

データ型: char | string

メモ

Variants 引数は削除される予定です。代わりに MatchFilter を使用してください。詳細については、互換性についての考慮事項を参照してください。

Variant Subsystem を検索するオプション。以下として指定します。

  • 'AllVariants' — すべてのバリアントの選択を検索します。

  • 'ActiveVariants' — アクティブなバリアントの選択のみ検索します。

  • 'ActivePlusCodeVariants' — シミュレーション内でアクティブであり、生成されたコードの一部である Variant Subsystem 内のすべてのバリアントの選択肢を検索します。

この検索条件は、[バリアント制御モード]expression または label に設定されている Variant Subsystem ブロックにのみ適用されます。MatchFilter オプションを指定して Simulink.FindOptions オブジェクトを使用すると、すべてのタイプのバリアント ブロックについて動作します。

データ型: char | string

ブロック、システム、ライン、端子、注釈など、検索内の要素に一致させる関数ハンドル。MatchFilter を使用して、検索で要素を含めるべきか、スキップすべきかどうかを決定します。

名前付き関数は MATLAB® プログラム ファイル内で定義されていなければなりません。関数は要素のハンドルを入力として取り、2 つの出力を返します。

 function [match, prune] = func(element)
 
  • 入力 element は処理されているブロックのハンドルです。

  • 1 つ目の出力 match は logical 値です。false の場合、検索で要素がスキップされます。

  • 2 つ目の出力 prune は、element がサブシステムである場合にのみ適用される、オプションの logical 値です。既定値は false です。この値が true に設定されている場合、サブシステム全体が検索対象から除外されます。

例: MatchFilter を使用して、モデル vdp 内で 110 の間のゲイン値をもつすべての 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.activeVariantsSimulink.match.codeCompileVariants を提供します。これらの関数を使用して、アクティブなバリアントやコード コンパイルのバリアント ブロックを見つけることができます。これを行うには、モデルをコンパイルして、適切な MatchFilter オプションを適用します。

  • Simulink.match.activeVariants - モデルのコンパイル後にシミュレーションでアクティブなブロックと一致

  • Simulink.match.codeCompileVariants - モデルのコンパイル後に生成されたコードの一部であるブロックと一致

メモ

正しい結果を得るには、Simulink.match.activeVariants フィルターと Simulink.match.codeCompileVariants フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。

例: Simulink.match.activeVariants オプションを使用して、モデル内のアクティブなバリアントを検出します。

addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
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 コードの一部であるバリアントの選択を検出します。

addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
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');

検索テキストを正規表現として扱うオプション。true または false として指定します。MATLAB 正規表現の詳細については、正規表現を参照してください。

データ型: logical

検索するモデル内のレベル。正の整数として指定します。既定 (-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 で導入

すべて展開する

R2021a 以降は警告