Using Simulink    
find_system

システム、ブロック、ライン、注釈を検索します。

表示

詳細

find_system(sys, 'c1', cv1, 'c2', cv2,...'p1', v1, 'p2', v2,...) は、sys で指定された単数または複数のシステムやサブシステムを c1, c2 等によって指定された制約条件を用いて検索し、指定されたパラメータ値 v1, v2 等をもつオブジェクトに対するハンドルや絶対パスを出力します。sys にはパス名(または複数のパス名からなるセル配列)、ハンドル(または複数のハンドルからなるベクトル)の双方を指定できますし、入力を省略することもできます。sys がパス名またはパス名からなるセル配列に場合は、 find_system は検索によって発見したオブジェクトに対する複数のパス名からなるセル配列を出力します。sys はハンドルまたはハンドルからなるベクトルの場合は、find_system は発見したオブジェクトに対する複数のハンドルからなるベクトルを出力します。sys が省略された場合は、find_system はすべてのオープンシステムを検索しパス名からなるセル配列を出力します。

パラメータ名については、大文字と小文字の区別はありません。値の文字列については、デフォルトで大文字と小文字を区別します(詳細は、'CaseSensitive' サーチの制約を参照)。ダイアログボックスのエントリに対応するパラメータは、文字列の値をもちます。モデルとブロックパラメータのリストについては、付録A を参照してください。

検索の制約条件として、つぎのいずれかを指定することができます。

表 10-1: Search Constraints
名前
値のタイプ
詳細
'SearchDepth'
スカラ
指定されたレベルに検索の深さを限定します(0 -- オープンシステムのみ検索します。1 -- 最上位システムを構成するブロック、サブシステムのみ検索します。2 -- 最上位システムとその子システムを検索しまする)。 デフォルトは、全てのレベルを設定します。
'LookUnderMasks'
'none'
マスクされたブロックを検索しません。

{'graphical'}
ワークスペースやダイアログを含まないマスクされたブロックも検索します。デフォルトです。




'functional'
ダイアログをもたないマスクされたブロックも検索します。

'all'
すべてのマスクされたブロックも検索します。
'FollowLinks'
'on'| {'off'}
'on' の場合は、検索はライブラリブロックへリンクされたものを含みます。デフォルトは、'off' です。
'FindAll'
'on'| {'off'}
'on' の場合、システムのラインや端子、注釈に検索の対象が拡張されます。デフォルトは、'off' です。find_system は、このオプションが 'on' のときは sys の配列タイプにかかわらず、ハンドルからなるベクトルを出力します。
'CaseSensitive'
{'on'}| 'off'

'on' の場合、文字列もマッチングにおいて検索は大文字と小文字の区別を行います。デフォルトは 'on' です。
'RegExp'
'on'| {'off'}

'on' の場合、検索表現を正規表現として取り扱います。デフォルトは 'off' です。

表では、括弧内にデフォルトの制約の値を示しています。 'constraint' が省略されると、find_system はデフォルトの制約値を利用します。

例題

つぎのコマンドは、すべてのオープンシステムとブロックの名前を含むセル配列を出力します。

つぎのコマンドは、開いているすべてのブロック線図の名前を出力します。

つぎのコマンドは、clutch システム内の Unlocked サブシステムの子であるすべてのGotoブロックの名前を出力します。

つぎのコマンドは、Gain パラメータの値が1であるような vdp システム内のすべてのGainブロックの名前を出力します。

上記のコマンドは、つぎのコマンドと等価です。

これらのコマンドは、vdp システム内のすべてのラインと注釈のハンドルを出力します。

正規表現の検索

'RegExp'制約を 'on' と指定した場合、find_system はサーチ文字列を正規表現として取り扱います。正規表現とは、キャラクタが特殊なパターンマッチングの意味をもつ文字列です。たとえば、ピリオド(.)は正規表現ではそれ自身だけでなくそれ以外のキャラクタとマッチします。

正規表現は、find_system を使って行うことができる検索のタイプを大きく拡張します。たとえば、正規表現を使って部分ワードサーチを行うことができます。指定したキャラクタからなる文字列を含む、または先頭および末尾にもつパラメータをもつすべてのオブジェクトに対する検索を行うことができます。

正規表現を効果的に利用するためには、正規表現に含まれる特殊キャラクタの意味を知っておく必要があります。つぎの表は、find_subystem がサポートする特殊キャラクタをリストし、それらの使用法を説明します。

表現
使用法
.
任意のキャラクタとマッチ。たとえば、文字列 'a.''aa', 'ab', 'ac' 等とマッチします。
*
そのキャラクタの前にある0個およびそれ以上のキャラクタがマッチ。たとえば、'ab*''a', 'ab', 'abb' 等とマッチします。表現 '.*' は、空文字列を含む任意の文字列とマッチします。
+
そのキャラクタの前にある1個およびそれ以上のキャラクタがマッチ。たとえば、'ab+''ab', 'abb' 等とマッチします。
^
文字列の先頭がマッチ。たとえば、'^a.*' は、'a' で始まる任意の文字列とマッチします。
$
文字列の末尾がマッチ。たとえば、'.*a$' 'a' で終わる任意の文字列とマッチします。
\
そのつぎのキャラクタを通常キャラクタとして取り扱います。"エスケープ" キャラクタは正規表現を特殊キャラクタを含む表現とマッチさせます。たとえば、文字列 '\\'\ キャラクタを含む任意の文字列とマッチします。
[]
指定した複数のキャラクタのうちのいずれか1つがマッチ。たとえば、'f[oa]r' は、'for' および 'far' とマッチします。キャラクタの中には、括弧ないで特殊な意味をもつものがあります。ハイフン(-) は、マッチするキャラクタの範囲を示します。たとえば、'[a-zA-Z1-9]' は、任意の英数字キャラクタがマッチします。circumflex (^) は、マッチングを行わないキャラクタを示します。たとえば、'f[^i]r''far''for' とはマッチしますが、'fir' とはマッチしません。
\w
ワードキャラクタがマッチ(これは、[a-z_A-Z0-9]に対する省略表現です)。たとえば、'^\w''mu' とマッチしますが、'&mu' とはマッチしません。
\d
任意の数字がマッチ([0-9]の省略表現)。たとえば、'\d+' は任意の整数とマッチします。
\D
非数字がマッチ([^0-9]の省略表現)。
\s
空白がマッチ([ \t\r\n\f]の省略表現)。
\S
空白でないキャラクタがマッチ([^ \t\r\n\f]の省略表現)。
\<WORD\>
正確に WORD とマッチ。ここで、WORD は他の単語とは空白で区切られたキャラクタからなる文字列です。たとえば、 '\<to\>''to' とマッチしますが、'today' とはマッチしません。


Simulinkシステムの検索に正規表現を使うためには、'regexp' 検索制約条件を find_system コマンド内で 'on' と指定し、通常の検索文字列で使う位置で正規表現を使います。

たとえば、つぎのコマンドはSimulinkに付属している clutch モデルのすべてのinportおよびoutportブロックを検索します。

参考


 delete_line gcb