ログ データのデータセット変換
Dataset 形式に変換する理由
次のいずれかの形式で記録されたログ データを含む MATLAB® ワークスペース変数は、
コンストラクターを使用して Simulink.SimulationData.Dataset
Dataset
形式に変換することができます。
配列
構造体
時間付き構造体
MATLAB 時系列
ModelDataLogs
Simulink® の他のログ形式のデータを Dataset
形式に変換すると、ログ データの後処理を実行するスクリプトの作成が簡単になります。たとえば、複数の To Workspace ブロックをもつモデルはさまざまなデータ形式を使用できます。ログ データを Dataset
形式に変換すると、さまざまな形式を処理するために特別なコードを記述する必要がなくなります。
データ ログ形式のサポート レベルはシミュレーション モードごとに異なります。ノーマル モードとアクセラレータ モードの間でモードを切り替えるときは、使用するログ形式の変更が必要になることがあります。
Dataset
形式に変換することで、Dataset
形式を必要とする機能も簡単に利用できるようになります。以前のリリースで記録された Dataset
以外の形式のログ データを簡単に変換して、新しいリリースの Dataset
データと一緒に使用できます。
Dataset
形式には次のような特徴があります。
MATLAB
timeseries
オブジェクトを使用してログ データを格納すると、MATLAB で Simulink ライセンスなしでログ データを操作可能。たとえば、ログ データを操作するには、filter
、detrend
、resample
などの MATLAB 時系列のメソッドを使用可能。反復サブシステムや Stateflow® 信号ログに重要となる所定のタイム ステップでの複数データ値のログをサポート。
既定の設定では、生成される Dataset
オブジェクトの名前には変数の名前が使用されます。名前と値のペアを使用して Dataset
の名前を指定できます。
concat
メソッドを使用して、複数の Dataset
オブジェクトを 1 つの Dataset
オブジェクトに連結することができます。
変換結果
Dataset
オブジェクトでは、データが要素として格納されます。変数 Dataset
の要素を表示するには、MATLAB コマンド プロンプトで変数名を入力します。Dataset
オブジェクトの要素のタイプは、格納されるデータに応じて異なります。たとえば、信号ログでは
要素としてデータが格納され、Simulink.SimulationData.Signal
Dataset
形式の状態ログでは
要素として格納されます。それぞれの要素では MATLAB 時系列オブジェクトとしてデータが格納されます。変換の実行時は、要素や時系列のフィールドに変換後のオブジェクトからできるだけ多くの値が読み込まれるように処理されます。Simulink.SimulationData.State
形式 | 変換結果に関するメモ |
---|---|
MATLAB 時系列 | 非バス データのログを変換するときは、ソフトウェアによって、まず 時系列形式のバス データのログでは、それぞれの時系列がバスの各要素に対応します。これらのログ データは、変換すると時系列オブジェクトをリーフ ノードとする構造体にまとめられます。この構造体の階層はバスの階層に対応します。このタイプの時系列オブジェクトの構造体を変換するときは、構造体全体が 時系列オブジェクトには、ブロック パスやタイムスタンプなどの関連情報が格納されています。変換時には、その情報を維持するように処理されます。 |
構造体および時間付き構造体 | 構造体および時間付き構造体の形式では、 構造体の変換では、構造体が スコープ データを構造体形式で記録する場合、その構造体には |
配列 | 配列に格納される情報は多くありません。たとえば、ブロック パスの情報は格納されません。 配列の変換では、配列が |
|
メモ
|
データセット変換の制限
ログ データを
Dataset
形式に変換すると、元のログ データに含まれていたすべての情報がDataset
オブジェクトに格納されます。ただし、対応する情報がないDataset
の他のプロパティについては既定値が使用されます。To Workspace ブロックを使用してログ記録された可変サイズの信号のデータを変換すると、構造体の
valueDimensions
フィールドの情報が変換で失われます。バス信号を配列、構造体、時間付き構造体の形式で記録すると、ログ データは次のように整理されます。
バスの最初の信号のデータが 1 列目に含まれる
2 番目のバス信号のデータが 2 列目に含まれる (それ以降も同様)
このデータを
Dataset
に変換するときは、Dataset
でもこの構成が維持されます。ただし、変換ではなくDataset
形式でバス信号のログを作成する場合は、このバス データは時系列オブジェクトの構造体として取得されます。ログ データに時間ベクトルが含まれていない場合、そのデータを
Dataset
に変換すると、変換によって時間ベクトルが挿入されます。それぞれのデータ値にはタイム ステップが 1 つずつあります。ただし、シミュレーションのタイム ステップとDataset
のタイム ステップは可変です。Dataset
形式ではフレーム信号の仕様は無視されます。構造体または時間付き構造体のデータをDataset
に変換する際、フレーム信号のログ データは形状変更されます。
参考
Simulink.SimulationData.Dataset