Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

find_system

モデル、ブロック、ライン、端子、注釈を検索する

説明

Objects = find_system は、サブシステムを含む、読み込まれたモデルとそれらのブロックを返します。

Objects = find_system(Model) は、指定されたモデルとそのブロックを返します。

Objects = find_system(Name,Value) は、読み込まれたモデルと、1 つ以上の Name,Value のペアの引数で指定された基準を満たすそれらのモデル内のオブジェクトを返します。この構文を使用して検索条件を指定し、特定のパラメーター値を検索できます。検索条件はパラメーターと値のペアの前に指定します。

Objects = find_system(Model,Name,Value) は、指定されたモデルの指定された基準を満たすオブジェクトを返します。

すべて折りたたむ

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

すべての読み込まれたモデルおよびライブラリとそのブロックを検索します。

find_system
ans = 13x1 cell
    {'vdp'                }
    {'vdp/Callback Button'}
    {'vdp/Constant'       }
    {'vdp/Mu'             }
    {'vdp/Product'        }
    {'vdp/Scope'          }
    {'vdp/Square'         }
    {'vdp/Sum'            }
    {'vdp/Sum1'           }
    {'vdp/x1'             }
    {'vdp/x2'             }
    {'vdp/Out1'           }
    {'vdp/Out2'           }

例を開きます。次に、vdp モデルおよび ex_sldemo_clutch モデルを読み込みます。

load_system({'vdp','ex_sldemo_clutch'})

vdp モデルとそのブロックを検索します。

find_system('vdp')
ans = 13x1 cell
    {'vdp'                }
    {'vdp/Callback Button'}
    {'vdp/Constant'       }
    {'vdp/Mu'             }
    {'vdp/Product'        }
    {'vdp/Scope'          }
    {'vdp/Square'         }
    {'vdp/Sum'            }
    {'vdp/Sum1'           }
    {'vdp/x1'             }
    {'vdp/x2'             }
    {'vdp/Out1'           }
    {'vdp/Out2'           }

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

すべての読み込まれたモデル、サブシステム、およびライブラリを検索します。サブシステム名は、サブシステムを個別に読み込むことができる場合にのみ返されます。

find_system('type','block_diagram')
ans = 1x1 cell array
    {'vdp'}

例を開きます。次に、ex_sldemo_clutch モデルを読み込みます。

load_system('ex_sldemo_clutch')

ex_sldemo_clutch モデル内の Unlocked サブシステムの子であるすべての Goto ブロックの名前を返します。

find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')
ans = 2x1 cell
    {'ex_sldemo_clutch/Unlocked/Goto' }
    {'ex_sldemo_clutch/Unlocked/Goto1'}

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

vdp モデル内で以下の 2 つの条件を満たしているブロックを検索します。

  • Integrator ブロックである。

  • [初期条件] の値が 0 である。

find_system('vdp','BlockType','Integrator','InitialCondition','0')
ans = 1x1 cell array
    {'vdp/x2'}

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

関数 find_system を使用して vdp モデルでラインを検索します。検索にラインを含めるには、'FindAll' 'on'. として指定します。

l = find_system('vdp','FindAll','on','type','line')
l = 18×1

   31.0002
   30.0002
   29.0002
   28.0002
   27.0002
   26.0002
   25.0002
   24.0002
   23.0002
   22.0002
      ⋮

関数 find_system を使用して vdp モデル内の注釈を検索します。検索に注釈を含めるには、'FindAll' 'on'. として指定します。

an = find_system('vdp','FindAll','on','type','annotation')
an = 3×1

   34.0002
   33.0002
   32.0002

例を開きます。次に、vdp モデルおよび f14 モデルを読み込みます。

models={'vdp','f14'};
load_system(models)

vdp モデルおよび f14 モデルで値が 3 である Block Dialog ボックス パラメーターをもつブロックを検索します。

find_system(models,'BlockDialogParams','3')
ans = 3x1 cell
    {'vdp/Square'                 }
    {'f14/Aircraft...'            }
    {'f14/Controller/q (rad//sec)'}

例を開きます。次に、ex_sldemo_clutch モデルおよび vdp モデルを読み込みます。

load_system({'ex_sldemo_clutch','vdp'})

3 で始まる [ブロック パラメーター] ダイアログ ボックス パラメーター値をもつ、現在読み込まれているモデルの最上位にあるすべてのブロックを検索します。

find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 2x1 cell
    {'vdp/Square'        }
    {'ex_sldemo_clutch/w'}

正規表現を使用して検索する場合は、一致させる文字ベクトルの一部を指定して、その文字ベクトルが含まれるすべてのオブジェクトを返すことができます。

ex_sldemo_clutch モデル内のすべての Integrator ブロックを検索します。

load_system('ex_sldemo_clutch');
ports=find_system('ex_sldemo_clutch','regexp','on','blocktype','Integrator')
ports = 3x1 cell
    {'ex_sldemo_clutch/Locked/Engine//Vehicle...'}
    {'ex_sldemo_clutch/Unlocked/Engine...'       }
    {'ex_sldemo_clutch/Unlocked/Vehicle...'      }

ライブラリ リンクである単一のサブシステムを含む myModel という名前のモデルがあるとします。モデルが最後に開かれた後に、ライブラリ内の対応するサブシステムに Gain ブロックが追加されています。

モデルを開きます。find_system を、'off' に設定した 'FollowLinks' と共に使用します。このコマンドは、サブシステムへのライブラリ リンクに従わず、最上位のサブシステムのみを返します。

open_system('myModel')
find_system(bdroot,'LookUnderMasks','on','FollowLinks', 'off')
ans = 

    'myModel'
    'myModel/Subsystem'

find_system を、'on' に設定した 'FollowLinks' と共に使用します。find_system はライブラリ リンクを更新し、サブシステムのブロックを返します。

find_system(bdroot,'LookUnderMasks','on','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain
Updating Link: myModel/Subsystem/Gain

ans = 

    'myModel'
    'myModel/Subsystem'
    'myModel/Subsystem/Gain'

関数の処理対象のモデルまたはブロックを指定する必要がある複数の関数呼び出しを行う場合、モデルまたはブロックを指定するためにファイル パスではなくハンドルを使用します。

関数 find_system の複数の呼び出しでハンドルとして vdp model を指定します。

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

vdp モデルのハンドルを取得します。

h = get_param('vdp','Handle')
h = 4.8828e-04

vdp モデルで値が 0 である、vdp モデル内の [ブロック パラメーター] ダイアログ ボックス パラメーターを検索します。vdp モデルのハンドルとして検索するモデルを指定します。

find_system(h,'BlockDialogParams','0')
ans = 8×1

    4.0005
    4.0005
    6.0005
   11.0005
   12.0005
   12.0005
   13.0005
   13.0005

vdp モデルで値が 3 で始まる [ブロック パラメーター] ダイアログ ボックス パラメーター値をもつブロック パラメーターを検索します。vdp モデルのハンドルとして検索するモデルを指定します。

find_system(h,'regexp','on','BlockDialogParams','^3')
ans = 7.0005

vdp モデルでブロック名に文字ベクトル 'port' が含まれているブロックを検索します。vdp モデルのハンドルとして検索するモデルを指定します。

find_system(h,'regexp','on','blocktype','port')
ans = 2×1

   12.0005
   13.0005

カスタム フィルター関数でMatchFilter引数を使用して、vdp モデルで Inport ブロックおよび Outport ブロック以外のブロックを検索します。

この例のカスタム関数は、ファイル nonInOutBlocks.m で定義されています。

function match = nonInOutBlocks(handle)
    match = true;
    if strcmp(get_param(handle,'Type'),'block')
        blockType = get_param(handle,'BlockType');
        if strcmp(blockType,'Inport') || strcmp(blockType,'Outport')
            match = false;
        end
    end
end

関数ハンドルを MatchFilter 引数の値として指定します。

load_system('vdp');
blks = find_system('vdp','MatchFilter',@nonInOutBlocks);

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 を使用して、モデルのコンパイル後にシミュレーションでアクティブなバリアント ブロックを検索します。

set_param(model,'SimulationCommand','update');
find_system(model,'MatchFilter',@Simulink.match.activeVariants);

関数 Simulink.match.codeCompileVariants を使用して、モデルのコンパイル後に、生成された C コードの一部であるバリアントの選択を検索します。

slexVariantSubsystems([],[],[],'compileForCodegen');
find_system(model,'MatchFilter',@Simulink.match.codeCompileVariants);
slexVariantSubsystems([],[],[],'term');

関数 Simulink.match.allVariants を使用して、バリアントが原因でブロックがアクティブか非アクティブかに関係なく、すべてのブロックを検索します。

find_system(model,'MatchFilter',@Simulink.match.allVariants);

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

find_system(model, ...
 'MatchFilter',@Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices);

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

find_system(model, ...
 'MatchFilter', @Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices);

関数 Simulink.match.variantAssemblySubsystems を使用して、slexVariantAssemblySubsystemWithMaskInLabel モデル内のすべての Variant Assembly Subsystem ブロックを検索します。

load_system('slexVariantAssemblySubsystemWithMaskInLabel');
find_system('slexVariantAssemblySubsystemWithMaskInLabel','MatchFilter',@Simulink.match.variantAssemblySubsystems);

入力引数

すべて折りたたむ

検索するモデル。モデルの絶対パス名、モデルのパス名の cell 配列、ハンドル、ハンドルのベクトルとして指定します。

例: 'MyModel/Subsystem1'

例: {'vdp','ex_sldemo_clutch'}

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'SearchDepth','0','LookUnderMasks','none','BlockType','Goto' は、マスク サブシステムを除く、読み込まれたモデルで Goto ブロックを検索します。

関数 find_system を使用する場合、Name,Value のペアの引数には以下を含めることができます。

  • 'CaseSensitive','on' など、条件のオプションと値のペアとして指定した検索条件

  • 'BlockType','Gain' など、パラメーターの名前と値のペアとして指定したパラメーター値

検索条件の引数のペアは任意の順序で指定でき、パラメーター値の引数のペアも任意の順序で指定できますが、検索条件の引数のペアはパラメーター値の引数のペアの前に指定しなければなりません。

ブロック パラメーターのリストの詳細については、ブロック固有のパラメーターを参照してください。

指定された値のブロック ダイアログ ボックス パラメーターを検索するオプション。'BlockDialogParams' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。このペアは他の検索条件のペアに従わなければなりません。

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

モデルのライン、端子、注釈を検索に含めるオプション。'FindAll''on' または 'off' で構成されるコンマ区切りのペアとして指定します。このオプションが 'on' に設定されている場合、Model 引数をモデルの絶対パス名、モデルのパス名の cell 配列、ハンドル、ハンドルのベクトルのいずれとして指定したかに関係なく、find_system はハンドルのベクトルを返します。

特定のタイプの結果のみを返すオプション。'Type' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。

  • 'block'

  • 'line'

  • 'port'

  • 'annotation'

モデルのライン、端子、または注釈を検索するには、まず FindAll の値を 'on' として指定してから、タイプを指定する必要があります。たとえば、myModel という名前のモデルで注釈を検索するには、コマンド ラインで以下のコマンドを入力します。

find_system('myModel','FindAll','on','Type','annotation')

最初の結果のみを返して検索を停止するオプション。'FirstResultOnly''on' または 'off' で構成されるコンマ区切りのペアとして指定します。

モデルで参照サブシステム内を確認し、'LookInsideSubsystemReference''on' または 'off' で構成されるコンマ区切りのペアとして指定された子ブロックをリストするオプションです。

ライブラリ ブロック内へリンクをたどるオプション。'FollowLinks''on' または 'off' で構成されるコンマ区切りのペアとして指定します。検索するモデルを指定しない場合、'FollowLinks''on' または 'off' のどちらに設定されても、find_system の結果には読み込まれたライブラリが含まれます。'FollowLinks''LookUnderMasks' と共に使用すると、サブシステムでライブラリ リンクを更新できます。サブシステムのライブラリ リンクを更新するを参照してください。

コメント付きブロックを検索に含めるオプション。'IncludeCommented''on' または 'off' で構成されるコンマ区切りのペアとして指定します。

部分的に読み込まれた任意のモデルを読み込むオプション。'LoadFullyIfNeeded' と、モデルを読み込む 'on' または読み込みを無効にする 'off' で構成されるコンマ区切りのペアとして指定します。たとえば、読み込み関連の警告が表示されるのを防ぐために、このオプションを使用します。

マスク内を検索するオプション。'LookUnderMasks' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。

  • 'graphical' — 検索には、ワークスペース、ダイアログ、ヘルプ文字列、UI 要素をもたず、アイコンを描画するコマンドのみをもつマスク サブシステムが含まれます。

  • 'none' — マスク サブシステムを検索しません。

  • 'functional' — 検索には、パラメーター、説明、ヘルプ文字列、および UI 要素をもたず、アイコンを描画するコマンドまたはマスク初期化コマンドをもつマスク サブシステムが含まれます。

  • 'all' — すべてのマスク サブシステムを検索します。

  • 'on' — すべてのマスク サブシステムを検索します。

  • 'off' — マスク サブシステムを検索しません。

検索式を正規表現として取り扱うオプション。'RegExp''on' または 'off' で構成されるコンマ区切りのペアとして指定します。'RegExp''on' に設定されている場合、検索では検索式が正規表現として取り扱われます。MATLAB® 正規表現の詳細については、正規表現を参照してください。

指定されたレベルに検索の深さを限定するオプション。'SearchDepth' と正の整数の文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。たとえば、読み込まれたモデルのみを検索する場合は '0'、モデルの階層構造の最上位のブロックおよびサブシステムを検索する場合は '1'、モデルの階層構造の最上位とその子を検索する場合は '2' を指定します。既定では、すべてのレベルを検索します。

メモ

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

バリアントを検索するオプション。'Variants' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。

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

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

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

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

検索でブロック、モデル、ライン、端子、注釈などの要素を照合してフィルター処理するオプション。関数ハンドルとして指定します。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.variantAssemblySubsystems — すべての Variant Assembly Subsystem ブロックを検索するためのフィルター関数。

メモ

正しい結果を得るには、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 フィルターを使用します。

出力引数

すべて折りたたむ

見つかった一致するオブジェクト。パス名の cell 配列またはハンドルのベクトルとして返されます。

以下の条件の両方が満たされている場合、見つかったオブジェクトはパス名の cell 配列として返されます。

  • 検索条件オプション FindAll が既定値 'off' に設定されている。

  • Model をパス名またはパス名の cell 配列として指定するか、モデルを指定しなかった。

以下の条件の 1 つ以上が満たされている場合、見つかったオブジェクトはハンドルのベクトルとして返されます。

  • FindAll の値を 'on' に設定した。

  • Model をハンドルまたはハンドルのベクトルとして指定した。

バージョン履歴

R2006a より前に導入

すべて展開する