Main Content

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

Simulink.findVars

モデルの変数およびブロックの関係を解析します。

説明

[variables] = Simulink.findVars(context) は、サブシステムや参照モデルなど、context で指定されたブロックおよびモデルで使用する変数を検索して返します。関数は、context が変数を使用しない場合は、空のベクトルを返します。

[variables] = Simulink.findVars(context,variablefilter)variablefilter で指定された変数または列挙型のみを検索します。たとえば、この構文を使用して、モデル内のどこで変数が使用されるかを特定します。

[variables] = Simulink.findVars(___,Name,Value) では、1 つ以上の Name,Value の引数ペアで指定された追加オプションを使用して変数を検索します。たとえば、使用されていない変数を検索できます。変数の他に context で使用されている列挙データ型も検索できます。

すべて折りたたむ

MyModel によって使用されている変数の検出

variables = Simulink.findVars('MyModel');

MyModel によってベース ワークスペース変数 k が使用されている場所をすべて検索します。MyModel をコンパイルしなくて済むようにキャッシュされた結果を使用します。

variables = Simulink.findVars('MyModel','Name','k',...
'SearchMethod','cached','SourceType','base workspace');

正規表現 ^trans と一致する名前をもつ変数が使用されている場所をすべて検索します。

variables = Simulink.findVars('MyModel','Regexp','on',...
'Name','^trans');

2 つのモデルが指定されているときに、最初のモデル、2 番目のモデル、両方のモデルによって使用されている変数を検索します。

model1Vars = Simulink.findVars('model1');
model2Vars = Simulink.findVars('model2');
commonVars = intersect(model1vars,model2Vars);

MyModel のモデル ワークスペースで定義されていても、モデルでは使用されていない変数を検索します。

unusedVars = Simulink.findVars('MyModel','FindUsedVars','off',...
'SourceType','model workspace');

ベース ワークスペース変数 kMyModel によって使用されていないかどうかを判定します。

varObj = Simulink.VariableUsage('k','base workspace');
unusedVar = Simulink.findVars('MyModel',varObj,...
'FindUsedVars','off');

MyModel 内の Gain1 ブロックによって使用されている変数を検索します。

variables = Simulink.findVars('MyModel',...
'Users','MyModel/Gain1');

モデル参照階層で使用されている変数を検索します。モデル MyNestedModel で検索を開始し、MyNestedModel の下の階層全体を検索します。

variables = Simulink.findVars('MyNestedModel','SearchReferencedModels','on');

MyModel で使用されている変数および列挙型を検索します。

varsAndEnumTypes = Simulink.findVars('MyModel','IncludeEnumTypes','on');

入力引数

すべて折りたたむ

検索するモデルとブロック。文字ベクトル、string、文字ベクトルの cell 配列、または string 配列として指定します。context は次のいずれかの方法で指定できます。

  • モデルの名前。たとえば、('vdp') はモデル vdp.slx を指定します。

  • ブロックまたはマスクされたブロックの名前またはパス。たとえば、('vdp/Gain1') は Gain1 という名前のブロックをモデル vdp.slx のルート レベルで指定します。

  • モデル名またはブロック名の cell 配列。

データ型: char | cell

検索する特定の変数。Simulink.VariableUsage オブジェクトの配列として指定します。各 Simulink.VariableUsage オブジェクトは検索する変数を識別します。

名前と値の引数

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

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

例: 'FindUsedVars','off'

変数が明示的に使用されているかどうか調べるフラグ。'FindUsedVars' および 'on' または 'off' で構成されるコンマ区切りのペアとして指定します。FindUsedVars'off' として指定すると、関数は context で使用されていないが、SourceType で指定されたワークスペースで定義されている変数を調べます。

例: 'FindUsedVars','off'

使用されている列挙データ型を検索するためのフラグ。'IncludeEnumTypes''on' または 'off' で構成されるコンマ区切りのペアとして指定します。関数は明示的に context で使用されている列挙型と、context で使用されている変数を定義する型を検索します。

関数は列挙型を使用しているブロックまたはオブジェクトに関する詳細をレポートしません。

SourceType'base workspace''model workspace' または 'mask workspace' として指定する場合、これらのソースでは列挙型を定義できないため、関数は列挙型をレポートしません。

使用されていない列挙型は FindUsedVars'off' として指定しても検索できません。

例: 'IncludeEnumTypes','on'

入力引数の正規表現のマッチングを有効にするフラグ。'RegExp''on' で構成されるコンマ区切りのペアとして指定します。マッチングできるのは文字ベクトル値をもつ入力引数のみです。

例: 'RegExp','on'

コンパイルのステータス。'SearchMethod' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'compiled' — 検索を実行する前に、検索コンテキストに含まれる各モデルをコンパイルして最新の結果を返します。

  • 'cached' — 前回のコンパイル時にキャッシュされた結果を使用して、結果をよりすばやく返します。

例: 'SearchMethod','compiled'

参照モデル内の検索を有効にするフラグ。'SearchReferencedModels''on' で構成されるコンマ区切りのペアとして指定します。

参照モデルがグローバル変数 (データ ディクショナリに保存された変数など) を使用する場合、関数は親モデルで呼び出されたときにこのグローバル変数を返します。SearchReferencedModels'on' に設定されている場合、関数によって返される Simulink.VariableUsage オブジェクトは、参照モデル内のブロックを変数のユーザーとして指定します。それ以外の場合は、オブジェクトは Model ブロックをユーザーとして指定します。

例: 'SearchReferencedModels','on'

検索する変数または列挙データ型の名前。'Name' と文字ベクトルまたは string で構成されるコンマ区切りのペアとして指定します。

例: 'Name','trans'

データ型: char

変数を定義するワークスペースまたはソース。'SourceType' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。

  • 'base workspace'

  • 'model workspace'

  • 'mask workspace'

  • 'data dictionary'

関数は指定したソースで定義されている変数の結果をフィルター処理します。

例: 'SourceType','base workspace'

'IncludeEnumTypes''on' として指定して列挙データ型を検索する場合、'SourceType' は列挙型が定義されている方法を表します。次のいずれかのオプションを指定できます。

  • 'MATLAB file'

  • 'dynamic class'

  • 'data dictionary'

関数は指定したソースで定義されている列挙型の結果をフィルター処理します。

例: 'SourceType','MATLAB file'

SourceType を指定しないと、関数は結果をソース別にフィルター処理しません。

変数を検索する特定のブロックの名前。'Users' と文字ベクトルまたは string で構成されるコンマ区切りのペアとして指定します。

一連の特定のブロックを検索するには、RegExp'on' として指定して正規表現マッチングを有効にし、文字ベクトル内で正規表現を使用します。たとえば、'Users','MyModel/Gain*' を指定して、名前が Gain で始まるすべてのブロックを MyModel で検索できます。

例: 'Users','MyModel/Gain1'

例: 'Users','MyModel/mySubsystem/Gain2'

例: 'Users','MyModel/Gain*'

制限

Simulink.findVars は次の構成には対応していません。

  • スクリプト内の MATLAB® コードと初期化およびコールバック関数。

  • ライブラリ内のライブラリとブロック。

  • 入力引数を除く、MATLAB Function ブロック内の変数。ただし、Simulink.findVars は、MATLAB Function ブロックの任意の場所で使用されている列挙型を検索できます。

  • Stateflow® ブロックからの MATLAB の直接的な呼び出し。

  • ssRegisterDataType を使って登録されたデータ型の変数を使用する S-Function。この変数を検索可能にするには、代わりに ssRegisterTypeFromNamedObject を使用します。

  • string 内の変数

  • struct 内のフィールド。

  • 並列モデルの参照ビルド用に構成されている最上位モデル。この場合、Simulink.findVars は、次のいずれかの名前と値の引数を使用して呼び出された場合は機能しません。

    • 'cached' として指定された 'SearchMethod'

    • 'on' として指定された 'SearchReferencedModels'

  • Simulink.findVars は、Variant Subsystem ブロックのダイアログ ボックスで [バリアントのアクティベーションのタイミング] パラメーターが [コードのコンパイル] に設定されている場合にのみ、非アクティブな Variant Subsystem ブロックで変数の使用を検出します。この値を選択しない場合、関数は非アクティブなバリアントで変数の使用を検出しません。

バージョン履歴

R2010a で導入