ドキュメンテーション

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

Simulink.SimulationData.DatasetRef クラス

パッケージ: Simulink.SimulationData
スーパークラス:

Simulink.SimulationData.DatasetRef オブジェクトの作成

説明

参照を使用して MAT ファイルに格納されている Simulink.SimulationData.Dataset オブジェクトにアクセスするには、Simulink.SimulationData.DatasetRef オブジェクトを作成します。この参照を使用すると、永続的なストレージにログ記録したデータを信号ごとに取得することで、メモリ不足を回避することができます。DatasetRef オブジェクトをルートレベルの入力端子にストリーミングするか、このオブジェクトを使用して、ストリーミングに使用する SimulationDatastore オブジェクトを作成できます。詳細については、シミュレーションのためのビッグ データの読み込みを参照してください。

並列シミュレーションで、Simulink.SimulationInput の配列を指定し、ファイルにログを記録する場合、Simulink® では次が実行されます。

  • MAT ファイル内の出力データにアクセスする Simulink.SimulationData.DatasetRef オブジェクトを作成し、SimulationOutput オブジェクト データにそれらのオブジェクトを含める

  • シミュレーション用に CaptureErrors 引数を有効にする

構築

datasetRefObj = Simulink.SimulationData.DatasetRef(location,identifier) は、MAT ファイル内に格納されている Simulink.SimulationData.Dataset 変数の内容への参照を作成します。

入力引数

すべて展開する

参照する Simulink.SimulationData.Dataset オブジェクトを含んでいる MAT ファイル。文字ベクトルとして指定します。文字ベクトルは MAT ファイルへのパスです。別のロケールにあるロケールのファイル名を使用しないでください。

MAT ファイル内の Simulink.SimulationData.Dataset 変数の名前。文字ベクトルとして指定します。永続的なストレージにログ記録するときは、Simulink は各種類のログに指定されている変数名を使用します。

信号ログに既定の変数名 (logsout)、永続的なストレージのログに既定の MAT ファイル名 (mat.out) を使用するとします。モデルをシミュレートした後で信号ログ用の Dataset オブジェクトへの参照を作成するには、MATLAB® コマンド ラインで次のように入力します。

sigLogRef = Simulink.SimulationData.DatasetRef('out.mat','logsout');

出力引数

すべて展開する

ログ データセットへの参照。Simulink.SimulationData.DatasetRef オブジェクトとして返されます。

プロパティ

すべて展開する

参照する Simulink.SimulationData.Dataset オブジェクトを含んでいる MAT ファイル。文字ベクトルとして指定します。文字ベクトルは MAT ファイルへのパスです。.mat 拡張子をファイル名に含めます。別のロケールにあるロケールのファイル名を使用しないでください。

MAT ファイル内の Simulink.SimulationData.Dataset 変数の名前。文字ベクトルとして指定します。永続的なストレージにログ記録する場合、Simulink は各種類のログに指定されている変数名を使用します (たとえば、信号ログ データには 'logsout')。

メソッド

Simulink.SimulationData.DatasetRef オブジェクトに対し、numElementsgetElement および getElementNames メソッドを Simulink.SimulationData.Dataset オブジェクトに対する場合と同様に、使用します。

メソッド

目的

numElements

データセットから要素数を取得する

getElementNames

データセットのすべての要素の名前を返す

get

get メソッドは getElement メソッドのエイリアスです。

メモ

get メソッドまたは getElement メソッドを使用する代わりに、中かっこを使用してインデックス構文を効率化し、データセット参照内の要素にアクセスできます。中かっこを使用して要素を取得するには、インデックスが変数の要素数以下のスカラーでなければなりません。get メソッドと getElement メソッドでは、名前やブロック パスだけでなく、インデックスで要素を指定できます。

データセットから要素を取得する

getAsDatastore

DatasetRef オブジェクトから要素の matlab.io.datastore.SimulationDatastore 表現を取得します。

getDatasetVariableNames

MAT ファイルの Dataset 変数名のリスト

plot

データセットの要素を [信号のプレビュー] ウィンドウにプロットする

ヒント

MAT ファイル内の Dataset 変数の名前を取得するには、関数 Simulink.SimulationData.DatasetRef.getDatasetVariableNames を使用すると、関数 who や関数 whos を使用するよりも高速に処理されます。

コピーのセマンティクス

DatasetRef オブジェクトのプロパティを値ごとにコピーできます。ただし、DatasetRef オブジェクトのコピーでは、ハンドル オブジェクトが作成されます。DatasetRef オブジェクトをコピーしても、オブジェクトが参照する MAT ファイル内のデータはコピーされません。コピー操作の詳細については、MATLAB ドキュメンテーションのオブジェクトのコピー (MATLAB)を参照してください。

すべて折りたたむ

この例は、Simulink.SimulationData.DatasetRef オブジェクトを作成および使用して、永続ストレージにログ記録されるモデルのデータにアクセスする方法を示しています。この簡単な例は、永続ストレージへのログ記録の基本的な手順です。ここで紹介した例はメモリ要件が小さい、短いシミュレーションであり、永続ストレージへの実際のログ記録は表していません。

vdp モデルを開きます。

[コンフィギュレーション パラメーター][データのインポート/エクスポート] ペインで、次のパラメーターを選択します。

  • 状態

  • データセットのデータをファイルにログ

[形式] パラメーターを [データセット] に設定します。

その他のパラメーター設定は変更せずに [適用] をクリックします。

モデルで、信号をクリックし、アクション バーから [データ ログの有効化] を選択します。

モデルのシミュレーションを実行します。

out.mat ファイル内の Dataset 変数名のリストを取得します。

varNames = Simulink.SimulationData.DatasetRef.getDatasetVariableNames('out.mat')
varNames = 

  1x2 cell array

  'logsout'   'xout'

out.mat に格納されている、ログ記録された状態データへの参照を作成します。ログ記録された状態データの変数は xout です。

statesLogRef = Simulink.SimulationData.DatasetRef('out.mat','xout')
statesLogRef = 

  Simulink.SimulationData.DatasetRef
  Characteristics:
          Location: out.mat (/my_files/out.mat)
        Identifier: xout

  Resolved Dataset: 'xout' with 2 elements

       Name  BlockPath 
       ____  _________ 
    1  ''    vdp/x1   
    2  ''    vdp/x2   

out.mat に格納されている信号ログ データへの参照を作成します。信号ログ データの変数は logsout です。

sigLogRef = Simulink.SimulationData.DatasetRef('out.mat.','logsout')
sigLogRef = 

  Simulink.SimulationData.DatasetRef
  Characteristics:
          Location: out.mat (/my_files/out.mat)
        Identifier: logsout

  Resolved Dataset: 'logsout' with 1 element

       Name  BlockPath 
       ____  _________ 
    1  x1    vdp/x1   

numElements を使用して、ログ記録された状態に関するデータセット内の要素数にアクセスします。

statesLogRef.numElements
ans =

     2

DatasetRef を使用して、信号のログ データセットの最初の要素にアクセスします。

sigLogRef{1}
ans = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'x1'
    PropagatedName: ''
         BlockPath: [1x1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1x1 timeseries]


  Methods, Superclasses

永続ストレージの MAT ファイルを削除し、DatasetRef オブジェクトの 1 つを使用してみます。

delete('out.mat');
statesLogRef.get(1)
File does not exist.

statesLogRef は依然として存在しますが、それは既に無いファイル内の Dataset オブジェクトへの参照です。

R2016a で導入