Main Content

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

find

クラス: Simulink.SimulationData.Dataset
パッケージ: Simulink.SimulationData

データセットから要素または要素の集合を取得

説明

[datasetOut,retIndex]=find(datasetIn,Name,Value,…) は、Simulink.SimulationData.Dataset オブジェクトと、プロパティ値が指定したプロパティ名および値に一致する要素のインデックスを返します。オプションの Name,Value ペアのプロパティをコンマ区切りで指定します。Name はプロパティ名で、Value は対応する値です。Name は一重引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアのプロパティを任意の順番で指定できます。

[datasetOut,retIndex]=find(datasetIn,Name,Value,'-logicaloperator',…Name,Value,…) は、論理演算子をプロパティ値のマッチングに適用します。複数の論理演算子を組み合わせることができます。論理演算子は次のいずれかです。

  • -or

  • -and

演算を指定しない場合、このメソッドでは -and であると見なされます。

[datasetOut,retIndex]=find(datasetIn,'-regexp',Name,Value,…) は、プロパティの値が次のように関数 regexp に渡されるのと同様にして正規表現を使用して要素をマッチングします。

regexp(element.Name,Value)
このメソッドでは、-regexp の後に現れる名前と値のペアに正規表現によるマッチングを適用します。-regexp がない場合、このメソッドではプロパティの値が次のように渡されたのと同様に要素をマッチングします。

isequal(element.Name,Value)

-regexp についての詳細は、複数のブロック パスを含む -regexpを参照してください。

複数のブロック パスを含む -regexp

-regexp は文字型のプロパティで機能します。複数のブロック パスを指定するために、Simulink.SimulationData.BlockPathSimulink.BlockPath を使用できます。たとえば、信号が参照モデルに記録される場合、Simulink.SimulationData.BlockPath を使用して複数のブロック パスを指定できます。

このメソッドは、次の場合に、1 つ以上の個別のブロック パスが指定した Value のパスと一致する BlockPath プロパティを含む要素を返します。

  • BlockPathName プロパティを伴う -regexp

  • Value が文字ベクトルまたは 1 つのブロック パスをもつ Simulink.SimulationData.BlockPath 型のスカラー オブジェクト

入力引数

すべて展開する

照合する要素を検索する SimulationData.Dataset オブジェクト

要素内の検索対象のプロパティ名。

要素内の検索対象のプロパティ値。

出力引数

すべて展開する

指定した条件に一致する要素を格納した SimulationData.Dataset オブジェクト。一致する SimulationData.Dataset オブジェクトがない場合、返される SimulationData.Dataset オブジェクトには要素はありません。

指定した条件に一致する要素の datasetIn のインデックス。

すべて展開する

特定のブロック パス (文字ベクトルで指定) と端子インデックスを検索します。

dsOut = find(dsIn, 'BlockPath', 'vdp/x1', 'PortIndex', 1)

名前または伝播した名前が InValve である要素を検索します。

dsOut = find(dsIn, 'Name', 'InValve', '-or', 'PropagatedName', 'InValve')
dsOut = find(dsIn, '-regex','Name', 'In*', '-or', …
                   '-regex','PropagatedName', 'In*')

specified_name を含むすべての要素を検出して new_name に置き換えます。

[dsOut,idxInDs] = find(ds, 'specified_name');
for idx=1: length(idxInDs)
  % process each element
   elm = get(dsOut, idx);
   elm.Name= 'New_Name'
   dsIn = setElement(dsIn, idxInDs(idx), elm);
end

-regexp を使用して subSys 内に記録されているすべての信号を検索します。

dsOut = find(dsIn, '-regexp', 'BlockPath', 'mdl/subSys/.*')

Model ブロック内に記録されているすべての信号を検索します。

dsOut = find(dsIn, '-regexp', 'BlockPath', 'refmdl/ModelBlk')

代替方法

find を使用する代わりに、中かっこを使用してインデックス構文を効率化し、データセット内の要素を取得できます。インデックスは、変数の要素数以下のスカラーでなければなりません。たとえば、logsout データセットの 2 番目の要素を取得します。

logsout{2}

また、get メソッドを使用して、データセットから要素または要素のコレクションを取得できます。

R2015b で導入