ドキュメンテーション

このページは前リリースの情報です。該当の英語のページはこのリリースで変更されています。最新情報を確認するには、ページ左下にある国リストで [United States] を選択し、英語ドキュメンテーションに切り替えてください。

Simulink.SimulationData.Dataset

MATLABtimeseries オブジェクトを使用するログ データのコンテナー

説明

Simulink® は、データ要素の格納に用いる Simulink.SimulationData.Dataset オブジェクトを、以下の場合に作成します。

  • 既定の信号ログ形式の Dataset を使用して、信号のログを実行する

  • データ ストアのログ記録

信号のログ記録に Dataset 形式を用いることは、ModelDataLogs 形式に比べていくつかの利点があります。利点の詳細は、「信号のログ形式」を参照してください。

Simulink.SimulationData.Dataset には、データセット中の各要素にアクセスする getElement メソッドが用意されています。インデックス、名前、またはブロック パスで各要素を指定できます。

信号のログ記録に Dataset 形式を選択するには、以下の "いずれか" を行います。

  • [コンフィギュレーション パラメーター] [データのインポート/エクスポート] [信号のログ形] パラメーターを [Dataset] に設定します。詳細は、「信号のログ形式」を参照してください。

  • MATLAB® コマンド ラインで、SignalLoggingSaveFormat パラメーターを Dataset に設定します。

ハンドルベースの ModelDataLogs クラスとは異なり、Simulink.SimulationData.Dataset は値クラスです。詳細は、「ハンドルと値のクラス」を参照してください。

ログ信号データを ModelDataLogs 形式で記録しておくと、関数 Simulink.ModelDataLogs.convertToDataset を使用して ModelDataLogs のデータを Dataset 形式に更新できます。

Simulink は、構成を参照する特定モデルにおいて、信号ログ データ形式の整合性をチェックします。詳細は、「モデル参照信号ログ形式の整合性」を参照してください。アップグレード アドバイザーを使用して (関数 upgradeadvisor を使用して) モデルで Dataset 形式を使用するようにアップグレードできます。

不整合性が確認された場合のもう 1 つの対処法は、関数 Simulink.SimulationData.updateDatasetFormatLogging を用いて、Dataset 形式を使用するようにモデルを更新することです。この方式では個々の参照モデルおよびバリアントごとに、[モデル コンフィギュレーション パラメーター][データのインポート/エクスポート][信号のログ形式] パラメーターを [Dataset] に設定します。

ModelDataLogs 形式を使用する既存のモデルを、Dataset 形式を使用するように移行する方法の詳細は、「ModelDataLogs 形式から Dataset 形式への移行」を参照してください。

プロパティのまとめ

名前

説明

Name

ログ データセットの名前です。

メソッドのまとめ

名前

説明

addElement

データセットの最後に要素を追加します。

get

getElement メソッドの構文と動作は get メソッドと同じです。

インデックス、名前またはブロック パスに基づいて、データセットから要素または要素の集合を取得します。

getElementNames

データセット要素の名前を取得します。

numElements

データセットの要素数を取得します。

setElement

指定したインデックスに格納された要素を変更します。

プロパティ

Name

説明

データセットの名前です。既定の設定はログ変数と同じです (たとえば、信号のログの場合は logsout)。

データセット間の識別を容易にしたい場合は、名前を指定します。たとえば、複数のシミュレーションを比較する場合に名前を再設定できます。

ds = Simulink.SimulationData.Dataset
ds.Name = 'Dataset1'

データ型

文字列

アクセス

RW

メソッド

addElement

目的

データセットに要素を追加します。

構文

dataset = dataset.addElement(element)
dataset = dataset.addElement(element,name)

入力引数

element

データセットに追加する要素です。element は、次のいずれかでなければなりません。

  • Simulink.SimulationData.Signal オブジェクト

  • Simulink.SimulationData.DataStoreMemory オブジェクト

name

要素名を指定する文字列です。

出力引数

dataset

要素を追加するデータセットです。新規の要素は、データセットの最後に追加されます。

説明

dataset = Simulink.SimulationData.Dataset.addElement(element) は、要素を Simulink.SimulationData.Dataset データセットに追加します。

dataset = Simulink.SimulationData.Dataset.addElement(element, name) は、要素を Simulink.SimulationData.Dataset データセットに追加します。この要素には、name 引数で指定した名前が与えられます。名前のない要素は、name で識別できます。既に名前をもつオブジェクトの場合 (たとえば、名前を割り当てた Simulink.SimulationData.Signal オブジェクト)、name 引数を用いて異なる名前を設定しない限り、要素はその名前を使用します。

データセットを作成し、そのデータセットに 3 つの要素を追加します。

time = 0.1*(0:100)';
ds = Simulink.SimulationData.Dataset;
element1 = Simulink.SimulationData.Signal;
element1.Name = 'A';
element1.Values = timeseries(sin(time), time);
ds = addElement(ds,element1);
element2 = Simulink.SimulationData.Signal;
element2.Name = 'B';
element2.Values = timeseries(2*sin(time), time);
ds = addElement(ds,element2);
element3 = Simulink.SimulationData.Signal;
element3.Name = 'C';
element3.Values = timeseries(3*sin(time), time);
ds = addElement(ds,element3) 
ds = 

  Simulink.SimulationData.Dataset
  Package: Simulink.SimulationData

  Characteristics:
              Name: 'logsout'
    Total Elements: 3

  Elements:
    1: 'A'
    2: 'B'
    3: 'C'

get

目的

インデックス、名前、またはブロック パスを基に、データセットから要素または要素の集合を取得する

getElement メソッドの構文と動作は get メソッドと同じです。

構文

element = dataset.get(index)
element = dataset.get(name)
element = dataset.get(blockpath,'-blockpath')

入力引数

index

インデックスは、データセット要素のインデックス値を反映するスカラー数値です。

  • インデックス - search_arg にスカラーの数値を指定します。

  • 名前 - search_arg に文字配列を指定します。

  • ブロック パス - ブロック パスを指定します。

名前やブロック パスに重複の可能性がある場合に search_arg に名前やブロック パスを指定する際セル配列を使用することで、一貫して Simulink.SimulationData.Dataset オブジェクトが返ります。(こうした重複は、たとえば、モデル参照階層で生じる場合があります)。

name

データセット要素の名前を反映する文字配列。

blockpath -blockpat

Simulink.SimulationData.BlockPath オブジェクトまたは要素の完全なブロック パスを示す文字配列。信号のログの場合は、要素のソース ブロックに対するブロック パスを指定します。ブロック パスの後に文字列 -blockpath を付けます (パスと文字列の間にコンマはなし)。

出力引数

element

get メソッドまたは getElement メソッドで検出された要素。指定された名前またはブロック パスをもつ要素が複数存在する場合や、1 つの文字列または Simulink.SimulationData.BlockPath オブジェクトを含むセル配列が存在する場合は、データセットを返します。

説明

element = Simulink.SimulationData.Dataset.get(index) は、index に対応する要素を返します。

element = Simulink.SimulationData.Dataset.get(name) は、名前が name と一致する要素を返します。

element = Simulink.SimulationData.Dataset.get(blockpath, '-blockpath') は、指定されたブロック パスに対応する要素を返します。

ex_bus_logging モデルの最上位モデルにあるデータセット要素にアクセスします。信号のログ データセットは topOut です。

open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_mdlref_counter_bus')));
open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_bus_logging')));
sim('ex_bus_logging')
topOut
topOut = 

  Simulink.SimulationData.Dataset
  Package: Simulink.SimulationData

  Characteristics:
              Name: 'topOut'
    Total Elements: 4

  Elements:
    1: 'COUNTERBUS'
    2: 'OUTPUTBUS'
    3: 'INCREMENTBUS'
    4: 'inner_bus'

  -Use get or getElement to access elements by index, name or 
   block path.
  -Use addElement or setElement to add or modify elements.

  Methods, Superclasses

search_arg のインデックスを指定して、データセットの最初の要素にアクセスします。

element1 = getElement(topOut,1)

search_arg に名前を指定するためにセル配列を使用して、データセットの 2 つ目の要素にアクセスします。

element2 = getElement(topOut,{'OUTPUTBUS'})

ブロック パスで、データセットの 3 つ目の要素にアクセスします。Simulink エディターで、IncrementBusCreator ブロックを選択します。MATLAB コマンド ラインで、search_arg には gcb を使用し、引数 '-blockpath' を指定します。

element3 = getElement(topOut,gcb,'-blockpath')
close_system('ex_bus_logging');
close_system('ex_mdlref_counter_bus');

getElementNames

目的

データセットにあるすべての要素の名前を返します。

構文

element_list = dataset.getElementNames

入力引数

なし

出力引数

[element_list]

データセットにあるすべての要素の名前を含む文字列のセル配列。

説明

element_list = Simulink.SimulationData.Dataset.getElementNames(element) は、Simulink.SimulationData.Dataset オブジェクトにあるすべての要素の名前を返します。

topOut データセット (信号ログ データ) の要素の名前を返します

open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_mdlref_counter_bus')));
open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_bus_logging')));
sim('ex_bus_logging')
el_names = topOut.getElementNames
el_names = 

    'COUNTERBUS'
    'OUTPUTBUS'
    'INCREMENTBUS'
    'inner_bus'
close_system('ex_bus_logging');
close_system('ex_mdlref_counter_bus');

numElements

目的

データセットの要素数を取得します。

構文

length = Simulink.SimulationData.Dataset.numElements()

説明

length = Simulink.SimulationData.Dataset.numElements() 最上位データセットの要素数を取得します。入れ子にされたデータセットの要素数を取得するには入れ子にされたデータセットに numElements を使用します。

ex_bus_logging の信号のログ データセットの要素数を取得します。

length = topOut.numElements()

setElement

目的

指定したインデックスに格納された要素を変更します。

構文

dataset = Simulink.SimulationData.Dataset.setElement(index,...
element)
dataset = Simulink.SimulationData.Dataset.setElement(index,...
element,name)

入力引数

index

追加される要素のインデックスを指定するスカラー数値です。この値は、1 から要素数プラス 1 の間でなければなりません。

element

既存の要素を置き換える、あるいはデータセットに追加する要素です。element は、次のいずれかでなければなりません。

  • Simulink.SimulationData.Signal オブジェクト

  • Simulink.SimulationData.DataStoreMemory オブジェクト

name

要素名を指定する文字列です。

出力引数

dataset

要素の変更または追加するデータセットです。

説明

dataset = Simulink.SimulationData.Dataset.setElement(index, element) 既存のインデックスについては、指定したインデックスに格納された要素を変更します。インデックスがデータセットの要素数より 1 つ大きい値の場合は、データセットの末尾に要素が追加されます。

dataset = Simulink.SimulationData.Dataset.setElement(index, element, name) は、指定されたインデックスに格納された要素を変更し、これに name 引数で指定された名前を付けます。名前のない要素は、name で識別できます。既に名前をもつ信号の場合 (たとえば、名前を割り当てた Simulink.SimulationData.Signal オブジェクト)、name 引数を用いて異なる名前を設定しない限り、要素はその名前を使用します。

ds = Simulink.SimulationData.Dataset
element1 = Simulink.SimulationData.Signal
element1.Name = 'A'
ds = ds.addElement(element1)
element2 = Simulink.SimulationData.Signal
element2.Name = 'B'
elementNew = Simulink.SimulationData.Signal
ds = ds.setElement(2,elementNew,'B1')
ds
ds = 

  Simulink.SimulationData.Dataset
  Package: Simulink.SimulationData

  Characteristics:
              Name: 'topOut'
    Total Elements: 2

  Elements:
    1: 'A'
    2: 'B1'
    
  Use getElement to access elements by index, name or 
  block path.

  Methods, Superclasses
この情報は役に立ちましたか?