Main Content

find

Simulink.SimulationData.Dataset オブジェクトから要素または要素の集合を取得

説明

[dsOut,idx]=find(dsIn,prop,val,...) は、propval で指定された 1 つ以上のプロパティ タイプと値のペアに一致する Dataset オブジェクト dsIn の要素を格納した Simulink.SimulationData.Dataset オブジェクトを返します。この関数は、それらの要素の Dataset オブジェクト dsIn におけるインデックスも返します。

[dsOut,idx]=find(dsIn,prop,val,logical,...prop,val,...) は、論理演算子 logical を適用して複数のプロパティと値のペアを接続します。複数の論理演算子を組み合わせることができます。

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

regexp(element.prop,val)
関数 find は、-regexp の後に現れる prop 引数と val 引数に正規表現によるマッチングを適用します。関数 find-regexp 引数が含まれていない場合、この関数ではプロパティの値が次のように渡されたのと同様に要素をマッチングします。

isequal(element.prop,val)

すべて折りたたむ

関数 find を使用して、Simulink.SimulationData.Dataset オブジェクトの要素または要素の集合にアクセスします。回転クラッチ システムをモデル化したモデル sldemo_clutch は、Dataset 形式で 10 個の信号をログに記録します。モデルの詳細については、クラッチ ロックアップ モデルの作成を参照してください。

モデルをシミュレートします。

sim("sldemo_clutch");

ログに記録された信号データは、sldemo_clutch_output という名前の Dataset オブジェクトに格納されます。

ds = sldemo_clutch_output
ds = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

  - Use braces { } to access, modify, or add elements using index.

関数 find を使用して、EngineSpeed という名前の要素を格納した Dataset オブジェクトを返します。

engSpeed = find(ds,"Name","EngineSpeed")
engSpeed = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 1 element

                         Name         BlockPath              
                         ___________  ______________________ 
    1  [1x1 Signal]      EngineSpeed  sldemo_clutch/Unlocked

  - Use braces { } to access, modify, or add elements using index.

また、関数 find を使用して、要素の集合を格納した Dataset オブジェクトを返すこともできます。たとえば、関数 find を使用して、Friction Mode Logic ブロックからの出力信号としてログに記録された ds のすべての要素を返し、それらの要素の Dataset オブジェクト ds における対応するインデックスを取得します。

[dsFml,idx] = find(ds,"BlockPath","sldemo_clutch/Friction Mode Logic")
dsFml = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 3 elements

                         Name        BlockPath                         
                         __________  _________________________________ 
    1  [1x1 Signal]      LockedFlag  sldemo_clutch/Friction Mode Logic
    2  [1x1 Signal]      LockupFlag  sldemo_clutch/Friction Mode Logic
    3  [1x1 Signal]      UnlockFlag  sldemo_clutch/Friction Mode Logic

  - Use braces { } to access, modify, or add elements using index.

idx = 1×3

     3     4     5

複数のプロパティ タイプと値のペアを使用して結果を絞り込みます。たとえば、Friction Mode Logic ブロックの最初の端子でログに記録された要素を検索します。

dsFmlp1 = find(ds,"BlockPath","sldemo_clutch/Friction Mode Logic","PortIndex",1)
dsFmlp1 = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 1 element

                         Name        BlockPath                         
                         __________  _________________________________ 
    1  [1x1 Signal]      LockedFlag  sldemo_clutch/Friction Mode Logic

  - Use braces { } to access, modify, or add elements using index.

関数 find で論理演算子 '-or' を使用して、Simulink.SimulationData.Dataset オブジェクトの要素の集合にアクセスします。回転クラッチ システムをモデル化したモデル sldemo_clutch は、Dataset 形式で 10 個の信号をログに記録します。モデルの詳細については、クラッチ ロックアップ モデルの作成を参照してください。

モデルをシミュレートします。

sim("sldemo_clutch");

ログに記録された信号データは、sldemo_clutch_output という名前の Dataset オブジェクトに格納されます。

ds = sldemo_clutch_output
ds = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

  - Use braces { } to access, modify, or add elements using index.

関数 find を使用して、Unlocked サブシステムまたは Locked サブシステムのいずれかからの出力信号としてログに記録された ds のすべての要素を格納した Dataset オブジェクトを返します。

find(ds,"BlockPath","sldemo_clutch/Unlocked",'-or',"BlockPath","sldemo_clutch/Locked")
ans = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 3 elements

                         Name          BlockPath              
                         ____________  ______________________ 
    1  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked  
    2  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked
    3  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked

  - Use braces { } to access, modify, or add elements using index.

関数 find で正規表現を使用して、Simulink.SimulationData.Dataset オブジェクトの要素の集合にアクセスします。回転クラッチ システムをモデル化したモデル sldemo_clutch は、Dataset 形式で 10 個の信号をログに記録します。モデルの詳細については、クラッチ ロックアップ モデルの作成を参照してください。

モデルをシミュレートします。

sim("sldemo_clutch");

ログに記録された信号データは、sldemo_clutch_output という名前の Dataset オブジェクトに格納されます。

ds = sldemo_clutch_output
ds = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

  - Use braces { } to access, modify, or add elements using index.

関数 find を使用して、名前に Speed という語を含む ds のすべての要素を格納した Dataset オブジェクトを返します。

正規表現 "\w*Speed\w*" は、Name プロパティに Speed という語を含む必要があるが、名前の指定されたテキストの前後には任意の英数字の表現やアンダースコア文字を含んでいてかまわないことを示します。

find(ds,"-regexp","Name","\w*Speed\w*")
ans = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 3 elements

                         Name          BlockPath              
                         ____________  ______________________ 
    1  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked  
    2  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked
    3  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked

  - Use braces { } to access, modify, or add elements using index.

入力引数

すべて折りたたむ

一致する要素を検索する Dataset オブジェクト。Simulink.SimulationData.Dataset オブジェクトとして指定します。

検索するプロパティのタイプ。string または文字ベクトルとして指定します。

Dataset オブジェクトの各要素はオブジェクトです。各オブジェクトのタイプは格納されるデータによって異なります。関数 find によって返される Dataset オブジェクトに要素を含めるには、その要素に prop で定義されるプロパティ タイプがなければなりません。たとえば、Dataset オブジェクト内の Simulink.SimulationData.Signal オブジェクトの要素を検索する場合、Signal オブジェクトのプロパティのいずれかを使用して検索できます。

  • Name — 要素の名前

  • PropagatedName — 伝播信号の名前

  • BlockPath — ブロック パス

  • PortIndex — 端子インデックス

  • PortType — ログに記録された端子のタイプ

  • Values — ログに記録された時間とデータ

関数 find によって返される結果は 1 つのオブジェクト タイプに限定されません。関数 find では、指定されたプロパティ タイプと指定された値をもつ任意のオブジェクト タイプの要素を格納した Dataset オブジェクトを返すことができます。たとえば、Dataset オブジェクトに myName という名前の要素が 2 つあり、一方の要素は Signal オブジェクトで、もう一方のオブジェクトは timeseries オブジェクトであるとします。プロパティ タイプを Name、プロパティ値を myName と指定することで、関数 find を使用して両方の要素を検索できます。

dsName = find(ds,"Name","myName")
dsName = 

Simulink.SimulationData.Dataset 'myDataset' with 2 elements

                             Name    BlockPath 
                             ______  _________ 
    1  [1x1 timeseries]      myName  ''       
    2  [1x1 Signal    ]      myName  ''       

  - Use braces { } to access, modify, or add elements using index.

検索するプロパティ値。string または文字ベクトルとして指定します。'-regexp' 引数を使用すると、プロパティ値を正規表現にできます。

複数のプロパティ タイプと値のペアを接続する論理演算子。'-and' または '-or' として指定します。

演算を指定しない場合、この関数では '-and' であると見なされます。

出力引数

すべて折りたたむ

1 つ以上のプロパティ タイプと値のペアに一致する要素を格納した Dataset オブジェクト。Simulink.SimulationData.Dataset オブジェクトとして返されます。指定したプロパティ タイプと値に一致する要素がない場合、返される Dataset オブジェクトは空になります。

指定したプロパティ名とプロパティ値に一致する要素の Dataset オブジェクト dsIn におけるインデックス。ベクトルとして返されます。指定したプロパティ タイプと値に一致する要素がない場合、idx は空になります。

代替方法

関数 find を使用する代わりに、中かっこを使用してインデックス構文を効率化し、Dataset オブジェクト内の要素にアクセスできます。インデックスは、変数の要素数以下の正の整数でなければなりません。たとえば、logsout データセットの 2 番目の要素を検索します。

logsout{2}

また、関数 get を使用して、データセットから要素または要素の集合を取得できます。

バージョン履歴

R2015b で導入