Main Content

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

find_system

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

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

説明

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.0044
   33.0044
   32.0044
   31.0044
   30.0044
   29.0044
   28.0044
   27.0044
   26.0044
   25.0044
      ⋮

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

   36.0044
   35.0044

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.0046
    4.0046
    8.0046
   13.0046
   14.0046
   14.0046
   15.0046
   15.0046

入力引数

すべて折りたたむ

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

例: 'MyModel/Subsystem1'

例: {'vdp','ex_sldemo_clutch'}

名前と値のペアの引数

オプションのコンマ区切りされた Name,Value の引数ペアを指定します。ここで、Name は引数名、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: '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' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。

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

  • 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');
activeBlks = find_system(model, 'MatchFilter', @Simulink.match.activeVariants);

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

addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
load_system('sldemo_variant_subsystems');
assignin('base','VSS_MODE',2);
sldemo_variant_subsystems([], [], [], 'compileForRTW');
activeBlks= find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.codeCompileVariants);
sldemo_variant_subsystems([], [], [], 'term');

出力引数

すべて折りたたむ

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

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

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

互換性についての考慮事項

すべて展開する

R2021a 以降は警告

R2021a での動作変更

R2006a より前に導入