このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
シミュレーションのためのビッグ データの読み込み
多くのタイム ステップと信号があるモデルのシミュレーションでは、コンピューターの作業メモリに収まらないほどの大きなデータを使用したり作成したりする場合があります。シミュレーションの入力データがメモリに収まらない場合、そのデータを、ルートレベルの Inport ブロックでシミュレーションの入力として使用するいくつかの方法のうちの 1 つを選択できます。これらの方法は、Version 7.3 の MAT ファイルで Dataset
形式で保存されたデータの読み込みにおいて機能します。これには別のシミュレーションから記録されたデータを含みます。
個別の入力信号がメモリに収まらないほど大きい場合は、
matlab.io.datastore.SimulationDatastore
オブジェクトを使用して信号データにアクセスできます。SimulationDatastore
オブジェクトからのデータは、メモリに収まるまとまりとしてシミュレーションにインクリメンタルに読み込まれます。シミュレーションの入力がメモリに読み取れないほど大きいファイルの
Simulink.SimulationData.Dataset
オブジェクトで指定されている場合、Simulink.SimulationData.DatasetRef
オブジェクトを使用して、Dataset
オブジェクトの内容全体をモデルにストリーミングできます。信号がメモリに収まり、メモリに収まらないほど大きいファイルに保存されている場合、
Simulink.SimulationData.DatasetRef
オブジェクトを使用して、個別の信号をファイルからメモリに読み込むことができます。
メモ
シミュレーションで記録されたデータを別のシミュレーションで入力として使用する場合、matlab.io.datastore.sdidatastore
オブジェクトを使用してデータをモデルにストリーミングすることもできます。sdidatastore
オブジェクトは、ディスク上のシミュレーション データ インスペクターのリポジトリにあるデータを参照するため、記録されたデータをファイルに保存する必要はありません。反復的なワークフローでは sdidatastore
オブジェクトをシミュレーション入力として使用することを検討してください。
すべてのビッグ データの読み込み方法は、データがメモリに収まらず、余分な手順を必要とする場合など、特別なケースに使用します。これらの例では、メモリいっぱいに収まるデータを使用して、ビッグ データの読み込みに必要なステップを説明します。シミュレーションの入力がメモリに収まる場合は、別の読み込み手法を使用することを検討してください。
SimulationDatastore
オブジェクトを使用した個別の信号のストリーミング
入力データ内の個別の信号がメモリに収まらないほど大きい場合、それらの信号について matlab.io.datastore.SimulationDatastore
オブジェクトを作成して、モデルにストリーミングできます。モデルにストリーミングする信号についての SimulationDatastore
オブジェクトを作成するには、まず、対象の信号を含む Dataset
オブジェクトを参照する Simulink.SimulationData.DatasetRef
オブジェクトを作成します。たとえば、slexAircraftExample
モデルのシミュレーションからログ記録されるデータ用に DatasetRef
を作成します。
logsout_DSR = Simulink.SimulationData.DatasetRef('aircraftData.mat','logsout');
中かっこを使って DatasetRef
オブジェクトにインデックス付けすることによって、または getAsDatastore
メソッドを DatasetRef
オブジェクトに使用することによって、対象の信号について SimulationDatastore
オブジェクトを作成できます。どちらの場合も、SimulationDatastore
オブジェクトは返された Simulink.SimulationData.Signal
オブジェクトの Values
プロパティにあります。
Dataset
オブジェクト内の信号のインデックスが分かっている場合、中かっこを使って DatasetRef
オブジェクトにインデックス付けして、信号に SimulationDatastore
を作成できます。
alphaRad_ds = logsout_DSR{4}
alphaRad_ds = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'alpha, rad' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 4 Values: [1x1 matlab.io.datastore.SimulationDatastore] Methods, Superclasses
信号インデックス、名前、またはブロック パスを使用して信号の SimulationDatastore
オブジェクトを作成するには、getAsDatastore
メソッドを使用します。たとえば、Stick
信号の SimulationDatastore
オブジェクトを作成します。
stick_ds = logsout_DSR.getAsDatastore('Stick')
stick_ds = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'Stick' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 matlab.io.datastore.SimulationDatastore] Methods, Superclasses
stick_ds
オブジェクトおよび alphaRad_ds
Simulink.SimulationData.Signal
オブジェクトの Values
プロパティが SimulationDatastores
であるため、信号データがモデルにストリーミングされます。SimulationDatastore
にバックアップされた Signal
オブジェクトを Dataset
オブジェクトの要素として、または Input
パラメーターのコンマ区切りリストの項目として含めることができます。
DatasetRef
オブジェクトを使用したデータセット全体のストリーミング
シミュレーションの入力がメモリに読み込めないほど大きいファイル内の Dataset
オブジェクトに保存されている場合、Simulink.SimulationData.DatasetRef
オブジェクトを作成してシミュレーションの入力をモデルにストリーミングできます。モデル コンフィギュレーション パラメーターの [データのインポート/エクスポート] ペインで [入力] パラメーターの値として DatasetRef
オブジェクトを指定する場合、シミュレーション中に、DatasetRef
の作成に使用される Dataset
オブジェクト内のすべての信号がモデルにストリーミングされます。Dataset
オブジェクトから個別の信号を読み込む、またはストリーミングするには、別のビッグ データの読み込み手法を使用します。
シミュレーションの入力をもつ Dataset
オブジェクトが含まれているファイルに他のデータも含まれている場合、関数 Simulink.SimulationData.DatasetRef.getDatasetVariableNames
を使用して、ファイルに含まれている Dataset
オブジェクトのリストを表示できます。ファイル内の Dataset
オブジェクトを格納する変数の名前のプレビューは、ファイルの内容がメモリに収まらない場合に特に有用です。
dsNames = Simulink.SimulationData.DatasetRef.getDatasetVariableNames('aircraftData.mat')
dsNames = 1x3 cell
{'logsout'} {'xout'} {'yout'}
Dataset
オブジェクト logsout
のデータを参照する DatasetRef
オブジェクトを作成します。
logsout_DSR = Simulink.SimulationData.DatasetRef('aircraftData.mat','logsout');
[入力] パラメーターを使用して、Simulink.SimulationData.Dataset
オブジェクトを読み込むのと同じ方法で logsout_DSR
を読み込むことができます。DatasetRef
の作成に使用する Dataset
オブジェクト内の各信号は、メモリに収まるまとまりとしてモデルにストリーミングされます。
DatasetRef
オブジェクトからの個別の信号の読み込み
シミュレーションの入力信号が個別にはメモリに収まり、メモリに収まらないファイル内の Dataset
オブジェクトに保存されている場合、Simulink.SimulationData.DatasetRef
オブジェクトを使用して、対象の各信号をメモリに読み込みます。その後、信号をモデルのシミュレーションの入力として読み込むことができます。
最初に、読み込む信号を含むファイル内の Dataset
オブジェクトを参照する DatasetRef
オブジェクトを作成します。たとえば、slexAircraftExample
モデルのシミュレーションからファイルにログ記録されたデータのために、DatasetRef
オブジェクトを作成します。
logsout_DSR = Simulink.SimulationData.DatasetRef('aircraftData.mat','logsout');
get
メソッドまたは getElement
メソッドを使用して、DatasetRef
オブジェクトを使って個別の信号をメモリに読み込むことができます。両方のメソッドは、同じ構文を使用して指定された要素をメモリに読み込みます。Dataset
オブジェクト内のインデックスまたはその名前を使用して、メモリに読み込む信号を指定できます。読み込む信号の名前がわからない場合、getElementNames
メソッドを使用して DatasetRef
オブジェクトによって参照される Dataset
オブジェクト内の要素の名前を確認できます。
elNames = logsout_DSR.getElementNames
elNames = 15x1 cell
{0x0 char }
{0x0 char }
{0x0 char }
{'alpha, rad'}
{'q, rad/sec'}
{0x0 char }
{'qGust' }
{'wGust' }
{0x0 char }
{0x0 char }
{0x0 char }
{'Stick' }
{0x0 char }
{0x0 char }
{0x0 char }
その名前を使用して qGust
信号をメモリに読み込みます。
qGust = logsout_DSR.getElement('qGust')
qGust = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'qGust' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 2 Values: [1x1 timeseries] Methods, Superclasses
モデルのルートレベルの Inport ブロックに読み込むシミュレーションの入力信号の Dataset
オブジェクトに qGust
信号を追加したり、qGust
を Input
パラメーターのコンマ区切りリストの項目として指定したりできます。
参考
matlab.io.datastore.SimulationDatastore
| Simulink.SimulationData.DatasetRef
| Simulink.SimulationData.Dataset