ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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 形式で記録しておくと、関数 Simulink.ModelDataLogs.convertToDataset を用いることで ModelDataLogs のデータを Dataset 形式に変換できます。

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

プロパティのまとめ

名前

説明

Name

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

メソッドのまとめ

名前

説明

addElement

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

get

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

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

getElementNames

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

numElements

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

setElement

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

プロパティ

Name

説明

データセットの名前です。既定の設定は空の文字列です。

データセット間の識別を容易にしたい場合は、名前を指定します。たとえば、モデル参照階層中に信号のログがある場合、各モデルごとに信号のログ データセットに名前をつけると、出力の解析が簡単になります。

以下の例は、データセット名として Dataset1 を指定する方法を示します。

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 = ds.addElement(element1);
element2 = Simulink.SimulationData.Signal;
element2.Name = 'B';
element2.Values = timeseries(2*sin(time), time);
ds = ds.addElement(element2);
element3 = Simulink.SimulationData.Signal;
element3.Name = 'C';
element3.Values = timeseries(3*sin(time), time);
ds = ds.addElement(element3) 

出力は、次のようになります。

ds = 

  Simulink.SimulationData.Dataset
  Package: Simulink.SimulationData

  Characteristics:
              Name: 'topOut'
    Total Elements: 3

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

get

目的

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

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

構文

element = dataset.get(search_arg)
element = dataset.get(search_arg,'-blockpath')

入力引数

search_arg

アクセスする要素を特定する、インデックス、名前、またはブロック パスです。以下によって要素にアクセスします。

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

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

  • ブロック パス - Simulink.SimulationData.BlockPath オブジェクトを指定します。信号のログの場合は、要素のソース ブロックに対するブロック パスを指定します。

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

'-blockpath'

ブロック パスを指定します。要素の完全なブロック パスを示す文字配列に search_arg を設定し、これに '-blockpath' を続けます。

出力引数

element

getElement メソッドがデータセットに追加する要素です。戻り値は search_arg 形式に依存します。

search_arg 引数の値戻り値
単一文字の配列、または Simulink.SimulationData.BlockPath オブジェクト要素が 1 つのみ見つかった場合は単一の要素、指定した名前の要素が複数存在する場合はデータセット
1 つの文字列を含むセル配列または Simulink.SimulationData.BlockPath オブジェクトデータセット

説明

element = Simulink.SimulationData.Dataset.get(search_arg)は、search_arg に指定されたインデックス、名前、またはブロック パスに対応する要素を返します。

element = Simulink.SimulationData.Dataset.get(search_arg, '-blockpath')は、アクセスしたい要素のブロック パスを特定する search_arg 文字配列に対応した要素を返します。

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 = topOut.get(1)

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

element2 = topOut.get({'OUTPUTBUS'})

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

element3 = topOut.get(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

参考

| | |

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