Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

find_system

システム、ブロック、ライン、端子、注釈の検索

説明

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

Objects = find_system(System) は、指定されたシステムとそのブロックを返します。

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

Objects = find_system(System,Name,Value) は、指定されたシステムの指定された基準を満たすオブジェクトを返します。

すべて折りたたむ

読み込まれたすべてのシステムとそのブロックの名前を返します。

load_system('vdp')
find_system
ans = 15x1 cell
    {'vdp'                     }
    {'vdp/Constant'            }
    {'vdp/More Info'           }
    {'vdp/More Info/Model Info'}
    {'vdp/Mu'                  }
    {'vdp/Mux'                 }
    {'vdp/Product'             }
    {'vdp/Scope'               }
    {'vdp/Square'              }
    {'vdp/Sum'                 }
    {'vdp/Sum1'                }
    {'vdp/x1'                  }
    {'vdp/x2'                  }
    {'vdp/Out1'                }
    {'vdp/Out2'                }

vdp を含む、読み込まれたシステムとライブラリを返します。

vdp システムとそのブロックを返します。

load_system({'vdp','ex_sldemo_clutch'})
find_system('vdp')
ans = 15x1 cell
    {'vdp'                     }
    {'vdp/Constant'            }
    {'vdp/More Info'           }
    {'vdp/More Info/Model Info'}
    {'vdp/Mu'                  }
    {'vdp/Mux'                 }
    {'vdp/Product'             }
    {'vdp/Scope'               }
    {'vdp/Square'              }
    {'vdp/Sum'                 }
    {'vdp/Sum1'                }
    {'vdp/x1'                  }
    {'vdp/x2'                  }
    {'vdp/Out1'                }
    {'vdp/Out2'                }

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

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

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

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

Copyright 2020 The MathWorks, Inc.

vdp システムを検索し、Gain 値が 1 に設定されているすべての Gain ブロックの名前を返します。

load_system('vdp');
find_system('vdp','BlockType','Gain','Gain','1')
ans = 1x1 cell array
    {'vdp/Mu'}

vdp システム内のすべてのラインと注釈のハンドルを取得します。'FindAll' を使用すると、指定したシステムの検索方法に関係なく、ハンドルが返されます。

load_system('vdp');
L = find_system('vdp','FindAll','on','type','line')
L = 19×1

   34.0004
   33.0004
   32.0004
   31.0004
   30.0004
   29.0004
   28.0004
   27.0004
   26.0004
   25.0004
      ⋮

A = find_system('vdp','FindAll','on','type','annotation')
A = 2×1

   36.0004
   35.0004

vdp システムと ex_sldemo_clutch システムで値が 0 のブロック ダイアログ ボックス パラメーターを検索します。

load_system({'vdp','f14'})
find_system({'vdp','f14'},'BlockDialogParams','0')
ans =

  32×1 cell array

    {'vdp/More Info'                                              }
    {'vdp/More Info/Model Info'                                   }
    {'vdp/Scope'                                                  }
    {'vdp/x2'                                                     }
    {'vdp/Out1'                                                   }
    {'vdp/Out1'                                                   }
    {'vdp/Out2'                                                   }
    {'vdp/Out2'                                                   }
    {'f14/Aircraft↵Dynamics↵Model'                              }
    {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
    {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
    {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)'      }
    {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)'      }
				.
				.
				.

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

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

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

load_system('ex_sldemo_clutch');
find_system('ex_sldemo_clutch','regexp','on','blocktype','port')
ans = 39x1 cell
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction Mode Logic/Tin'                   }
    {'ex_sldemo_clutch/Friction Mode Logic/Tfmaxs'                }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/lock'       }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/unlock'     }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/locked'     }
    {'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tin'}
    {'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tf' }
    {'ex_sldemo_clutch/Friction Mode Logic/locked'                }
    {'ex_sldemo_clutch/Friction Mode Logic/lock'                  }
    {'ex_sldemo_clutch/Friction Mode Logic/unlock'                }
    {'ex_sldemo_clutch/Friction Mode Logic/Tf'                    }
    {'ex_sldemo_clutch/Locked/Tin'                                }
    {'ex_sldemo_clutch/Locked/w'                                  }
    {'ex_sldemo_clutch/Unlocked/Tfmaxk'                           }
    {'ex_sldemo_clutch/Unlocked/Tin'                              }
    {'ex_sldemo_clutch/Unlocked/we'                               }
      ⋮

この例では、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 にシステムをハンドルとして指定します。0 の値をもつブロック ダイアログ ボックス パラメーターを検索します。同じブロックに対する get_param を複数回呼び出す場合、ブロック ハンドルを使用する方が、ブロックの絶対パスを文字ベクトルとして指定するよりも効率的です。

load_system('vdp');
sys = get_param('vdp','Handle');
find_system(sys,'BlockDialogParams','0')
ans = 8×1

    3.0006
    4.0006
    8.0006
   13.0006
   14.0006
   14.0006
   15.0006
   15.0006

入力引数

すべて折りたたむ

検索するシステム。システムの絶対パス名、システムのパス名の 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 のペアの引数には、検索条件およびパラメーター名と値のペアを含めることができます。検索条件は任意の順序で指定できますが、パラメーター名と値のペアの前に宣言しなければなりません。

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

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

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

システム内のライン、端子、注釈を検索に含めるオプション。'FindAll''on' または 'off' で構成されるコンマ区切りのペアとして指定します。このオプションが 'on' に設定されている場合、System 引数の指定にかかわらず、find_system はハンドルのベクトルを返します。

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

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

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

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

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

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

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

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

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

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

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

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

検索式を正規表現として取り扱うオプション。'RegExp' と、検索式を正規表現として取り扱う 'on' または 'off' で構成されるコンマ区切りのペアとして指定します。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 に設定されている場合、サブシステム全体が検索対象から除外されます。

例: MatchFilter を使用して、独自のフィルター関数 nonInOutBlocks を使用してモデル内の Inport ブロックと Outport ブロック以外のブロックをすべて検索します。

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
load_system('vdp');
blks = find_system('vdp', 'MatchFilter', @nonInOutBlocks)

バリアント: 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を参照してください。

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

openExample('simulink_variants/BuiltInMatchFiltersWithfindsystemForVariantBlocksExample');
model='sldemo_variant_subsystems';
load_system(model);
assignin('base','VSS_MODE',2);
set_param(model, 'SimulationCommand', 'update');
activeBlks = find_system(model, 'MatchFilter', @Simulink.match.activeVariants);

例: Simulink.match.codeCompileVariants フィルターを使用して、生成された C コードの一部であるバリアントの選択を検出します。

openExample('simulink_variants/BuiltInMatchFiltersWithfindsystemForVariantBlocksExample');
load_system('sldemo_variant_subsystems');
assignin('base','VSS_MODE',2);
sldemo_variant_subsystems([], [], [], 'compileForCodegen');
activeBlks= find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.codeCompileVariants);
sldemo_variant_subsystems([], [], [], 'term');

例: Simulink.match.allVariants() フィルターを使用して、モデル内のすべてのブロックを検出します。

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

例: Simulink.match.variantAssemblySubsystems() フィルターを使用して、モデル内のすべての Variant Assembly Subsystem ブロックを検出します。

openExample('simulink_variants/ChoicesMaskVariantAssemblySubsystemMaskParamObjectExample');
load_system('slexVariantAssemblySubsystemWithMask')
find_system('slexVariantAssemblySubsystemWithMask', 'MatchFilter', @Simulink.match.variantAssemblySubsystems)

出力引数

すべて折りたたむ

検出された一致するオブジェクト。以下として返されます。

  • System をパス名またはパス名の cell 配列として指定した場合、またはシステムを指定しなかった場合は、パス名の cell 配列

  • System をハンドルまたはハンドルのベクトルとして指定した場合は、ハンドルのベクトル

バージョン履歴

R2006a より前に導入

すべて展開する