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

ログ データのデータセット変換

Dataset 形式に変換する理由

次のいずれかの形式で記録されたログ データを含む MATLAB® ワークスペース変数は、Simulink.SimulationData.Dataset コンストラクターを使用して Dataset 形式に変換することができます。

  • 配列

  • 構造体

  • 時間付き構造体

  • MATLAB 時系列

  • ModelDataLogs

Simulink® の他のログ形式のデータを Dataset 形式に変換すると、ログ データの後処理を実行するスクリプトの作成が簡単になります。たとえば、複数の To Workspace ブロックをもつモデルはさまざまなデータ形式を使用できます。ログ データを Dataset 形式に変換すると、さまざまな形式を処理するために特別なコードを記述する必要がなくなります。

データ ログ形式のサポート レベルはシミュレーション モードごとに異なります。ノーマル モードとアクセラレータ モードの間でモードを切り替えるときは、使用するログ形式の変更が必要になることがあります。

Dataset 形式に変換することで、Dataset 形式を必要とする機能も簡単に利用できるようになります。以前のリリースで記録された Dataset 以外の形式のログ データを簡単に変換して、新しいリリースの Dataset データと一緒に使用できます。

Dataset 形式には次のような特徴があります。

  • MATLAB timeseries オブジェクトを使用してログ データを格納すると、MATLAB で Simulink ライセンスなしでログ データを操作可能。たとえば、ログ データを操作するには、filterdetrendresample などの MATLAB 時系列のメソッドを使用可能。

  • 反復サブシステムや Stateflow® 信号ログに重要となる所定のタイム ステップでの複数データ値のログをサポート。

既定の設定では、生成される Dataset オブジェクトの名前には変数の名前が使用されます。名前と値のペアを使用して Dataset の名前を指定できます。

Simulink.SimulationData.Dataset.concat メソッドを使用して、複数の Dataset オブジェクトを 1 つの Dataset オブジェクトに連結することができます。

変換結果

Dataset オブジェクトでは、データが要素として格納されます。変数 Dataset の要素を表示するには、MATLAB コマンド プロンプトで変数名を入力します。Dataset オブジェクトの要素のタイプは、格納されるデータに応じて異なります。たとえば、信号ログでは Simulink.SimulationData.Signal 要素としてデータが格納され、Dataset 形式の状態ログでは Simulink.SimulationData.State 要素として格納されます。それぞれの要素では MATLAB 時系列オブジェクトとしてデータが格納されます。変換の実行時は、要素や時系列のフィールドに変換後のオブジェクトからできるだけ多くの値が読み込まれるように処理されます。

形式変換結果に関するメモ

MATLAB 時系列

非バス データのログを変換するときは、ソフトウェアによって、まず Simulink.SimulationData.Signal オブジェクトとしてデータが追加されます。その後、そのオブジェクトが新たに作成された Dataset の要素として追加されます。

時系列形式のバス データのログでは、それぞれの時系列がバスの各要素に対応します。これらのログ データは、変換すると時系列オブジェクトをリーフ ノードとする構造体にまとめられます。この構造体の階層はバスの階層に対応します。このタイプの時系列オブジェクトの構造体を変換するときは、構造体全体が Simulink.SimulationData.Signal オブジェクトに追加されます。その後、そのオブジェクトがデータセットの要素として追加されます。

時系列オブジェクトには、ブロック パスやタイムスタンプなどの関連情報が格納されています。変換時には、その情報を維持するように処理されます。

構造体および時間付き構造体

構造体および時間付き構造体の形式では、Dataset 形式で記録した場合ほど多くの情報が格納されるとは限りません。ただし、構造体および時間付き構造体の形式を変換するときは、データ構造体に time フィールドと signals フィールドがなければなりません。

構造体の変換では、構造体が Simulink.SimulationData.Signal オブジェクトに追加され、そのオブジェクトがデータセットの要素として追加されます。他の情報がある場合は、要素または時系列の値に追加されます。たとえば、構造体に blockName というフィールドがある場合、その情報がブロック パスに追加されます。それ以外の場合、ブロック パスは空になります。

スコープ データを構造体形式で記録する場合、その構造体には PlotStyle フィールドが含まれます。このフィールドを使用して、Dataset オブジェクトの内挿が設定されます。

配列

配列に格納される情報は多くありません。たとえば、ブロック パスの情報は格納されません。

配列の変換では、配列が Simulink.SimulationData.Signal オブジェクトに追加され、そのオブジェクトが Dataset オブジェクトの要素として追加されます。ブロック パスやタイムスタンプなどの情報がないフィールドについては、空の状態になるか既定値が設定されます。

ModelDataLogs

ModelDataLogs 形式から Dataset 形式にデータが変換されます。

メモ

ModelDataLogs 形式は信号のログには使われなくなります。

データセット変換の制限

  • ログ データを Dataset 形式に変換すると、元のログ データに含まれていたすべての情報が Dataset オブジェクトに格納されます。ただし、対応する情報がない Dataset の他のプロパティについては既定値が使用されます。

  • 可変サイズの信号のログには To Workspace ブロックを使用します。To Workspace で記録したログ データを Dataset 形式に変換すると、可変サイズの信号に関する情報は失われます。

  • バス信号を配列、構造体、時間付き構造体の形式で記録すると、ログ データは次のように整理されます。

    • バスの最初の信号のデータが 1 列目に含まれる

    • 2 番目のバス信号のデータが 2 列目に含まれる (それ以降も同様)

    このデータを Dataset に変換するときは、Dataset でもこの構成が維持されます。ただし、変換ではなく Dataset 形式でバス信号のログを作成する場合は、このバス データは時系列オブジェクトの構造体として取得されます。

  • ログ データに時間ベクトルが含まれていない場合、そのデータを Dataset に変換すると、変換によって時間ベクトルが挿入されます。それぞれのデータ値にはタイム ステップが 1 つずつあります。ただし、シミュレーションのタイム ステップと Dataset のタイム ステップは可変です。

  • Dataset 形式ではフレーム信号の仕様は無視されます。構造体または時間付き構造体のデータを Dataset に変換する際、フレーム信号のログ データは形状変更されます。

参考

関連するトピック