主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

シミュレーションのためのビッグデータの読み込み

多くのタイムステップと信号があるモデルのシミュレーションでは,コンピューターの作業メモリに収まらないほどの大きなデータを使用したり作成したりする場合があります。シミュレーションの入力データがメモリに収まらない場合,そのデータを,ルートレベルの轮廓尺寸ブロックでシミュレーションの入力として使用するいくつかの方法のうちの1つを選択できます。これらの方法は,版本7.3の垫ファイルで数据集形式で保存されたデータの読み込みにおいて機能します。これには別のシミュレーションから記録されたデータを含みます。

  1. 個別の入力信号がメモリに収まらないほど大きい場合は,matlab.io.datastore.SimulationDatastoreオブジェクトを使用して信号データにアクセスできます。SimulationDatastoreオブジェクトからのデータは,メモリに収まるまとまりとしてシミュレーションにインクリメンタルに読み込まれます。

  2. シミュレーションの入力がメモリに読み取れないほど大きいファイルの万博1manbetxSimulink.SimulationData.Datasetオブジェクトで指定されている場合,万博1manbetxSimulink.SimulationData.DatasetRefオブジェクトを使用して,数据集オブジェクトの内容全体をモデルにストリーミングできます。

  3. 信号がメモリに収まり,メモリに収まらないほど大きいファイルに保存されている場合,万博1manbetxSimulink.SimulationData.DatasetRefオブジェクトを使用して,個別の信号をファイルからメモリに読み込むことができます。

メモ

シミュレーションで記録されたデータを別のシミュレーションで入力として使用する場合,matlab.io.datastore.sdidatastoreオブジェクトを使用してデータをモデルにストリーミングすることもできます。sdidatastoreオブジェクトは,ディスク上のシミュレーションデータインスペクターのリポジトリにあるデータを参照するため,記録されたデータをファイルに保存する必要はありません。反復的なワークフローではsdidatastoreオブジェクトをシミュレーション入力として使用することを検討してください。

すべてのビッグデータの読み込み方法は,データがメモリに収まらず,余分な手順を必要とする場合など,特別なケースに使用します。これらの例では,メモリいっぱいに収まるデータを使用して,ビッグデータの読み込みに必要なステップを説明します。シミュレーションの入力がメモリに収まる場合は,別の読み込み手法を使用することを検討してください。

SimulationDatastoreオブジェクトを使用した個別の信号のストリーミング

入力データ内の個別の信号がメモリに収まらないほど大きい場合,それらの信号についてmatlab.io.datastore.SimulationDatastoreオブジェクトを作成して,モデルにストリーミングできます。モデルにストリーミングする信号についてのSimulationDatastoreオブジェクトを作成するには,まず,対象の信号を含む数据集オブジェクトを参照する万博1manbetxSimulink.SimulationData.DatasetRefオブジェクトを作成します。たとえば,slexAircraftExampleモデルのシミュレーションからログ記録されるデータ用にDatasetRefを作成します。

logsout_DSR = 万博1manbetxSimulink.SimulationData.DatasetRef (“aircraftData.mat”“logsout”);

中かっこを使ってDatasetRefオブジェクトにインデックス付けすることによって,またはgetAsDatastoreメソッドをDatasetRefオブジェクトに使用することによって,対象の信号についてSimulationDatastoreオブジェクトを作成できます。どちらの場合も,SimulationDatastoreオブジェクトは返された万博1manbetxSimulink.SimulationData.Signalオブジェクトのプロパティにあります。

数据集オブジェクト内の信号のインデックスが分かっている場合,中かっこを使ってDatasetRefオブジェクトにインデックス付けして,信号にSimulationDatastoreを作成できます。

alphaRad_ds = logsout_DSR {4}
alphaRad_ds = 万博1manbetxSimulink. simulationdata . signal Package: Simulink. .SimulationData属性:名称:α,rad PropagatedName:”BlockPath: [1 x1 Simulink.SimulationDat万博1manbetxa。BlockPath] PortType: 'outport' PortIndex: 4 Values: [1x1 matlab.io.datastore. txt]SimulationDatastore)方法,父类

信号インデックス,名前,またはブロックパスを使用して信号のSimulationDatastoreオブジェクトを作成するには,getAsDatastoreメソッドを使用します。たとえば,坚持信号のSimulationDatastoreオブジェクトを作成します。

stick_ds = logsout_DSR.getAsDatastore (“坚持”
Simulink. s万博1manbetximulationdata . signal Package: Simulink。SimulationData属性:名称:“Stick”传播名称:“BlockPath: [1x1 Simulink.SimulationData. Bl万博1manbetxockPath: [1x1 Simulink.SimulationData. BlockPath: [1x1 Simulink.SimulationData. BlockPath]”BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 matlab.io.datastore. value: [1x1 matlab.io.datastore. value]SimulationDatastore)方法,父类

stick_dsオブジェクトおよびalphaRad_ds万博1manbetxSimulink.SimulationData.SignalオブジェクトのプロパティがSimulationDatastoresであるため,信号データがモデルにストリーミングされます。SimulationDatastoreにバックアップされた信号オブジェクトを数据集オブジェクトの要素として,または输入パラメーターのコンマ区切りリストの項目として含めることができます。

DatasetRefオブジェクトを使用した数据集全体のストリーミング

シミュレーションの入力がメモリに読み込めないほど大きいファイル内の数据集で指定されている場合,万博1manbetxSimulink.SimulationData.DatasetRefオブジェクトを作成してシミュレーションの入力をモデルにストリーミングできます。[データのインポート/エクスポート]ペインで[入力)パラメーターにDatasetRefオブジェクトを指定する場合,DatasetRefの作成に使用される数据集オブジェクト内のすべての信号がモデルにストリーミングされます。数据集オブジェクトから個別の信号を読み込む,またはストリーミングするには,他のビッグデータの読み込み手法のうちの1つを使用します。

シミュレーションの入力数据集が保存されているファイルに他の数据集とデータが含まれている場合,関数万博1manbetxSimulink.SimulationData.DatasetRef.getDatasetVariableNamesを使用して,ファイルに含まれている数据集オブジェクトのリストを表示できます。数据集オブジェクト内の変数名のプレビューは,ファイルの内容がメモリに収まらない場合に特に有用です。

datasetNames = 万博1manbetxSimulink.SimulationData.DatasetRef.getDatasetVariableNames (“aircraftData.mat”
datasetNames =1 x3单元格{' logsout}{‘xout}{'你'}

logsoutDatasetRefオブジェクトを作成します。

logsout_DSR = 万博1manbetxSimulink.SimulationData.DatasetRef (“aircraftData.mat”“logsout”);

输入パラメーターを使用して,万博1manbetxSimulink.SimulationData.Datasetオブジェクトを読み込むのと同じ方法でlogsout_DSRを読み込むことができます。DatasetRefの作成に使用する数据集オブジェクト内の各信号は,メモリに収まるまとまりとしてモデルにストリーミングされます。

DatasetRefオブジェクトからの個別の信号の読み込み

シミュレーションの入力信号が個別にはメモリに収まり,メモリに収まらないファイル内の数据集オブジェクトに保存されている場合,万博1manbetxSimulink.SimulationData.DatasetRefオブジェクトを使用して,対象の各信号をメモリに読み込みます。その後,信号をモデルのシミュレーションの入力として読み込むことができます。

最初に,読み込む信号を含むファイル内の数据集オブジェクトを参照するDatasetRefオブジェクトを作成します。たとえば,slexAircraftExampleモデルのシミュレーションからファイルにログ記録されたデータのために,DatasetRefオブジェクトを作成します。

logsout_DSR = 万博1manbetxSimulink.SimulationData.DatasetRef (“aircraftData.mat”“logsout”);

得到メソッドまたはgetElementメソッドを使用して,DatasetRefオブジェクトを使って個別の信号をメモリに読み込むことができます。両方のメソッドは,同じ構文を使用して指定された要素をメモリに読み込みます。数据集オブジェクト内のインデックスまたはその名前を使用して,メモリに読み込む信号を指定できます。読み込む信号の名前がわからない場合,getElementNamesメソッドを使用してDatasetRefオブジェクトによって参照される数据集オブジェクト内の要素の名前を確認できます。

elNames = logsout_DSR.getElementNames
elNames =15 x1细胞{0x0 char} {0x0 char} {'alpha, rad'} {'q, rad/sec'} {0x0 char} {'qGust'} {'wGust'} {0x0 char} {'Stick'} {0x0 char} {0x0 char} {0x0 char} {0x0 char} {' x0 char} {' x0 char} {' x0 char} {' x0 char} {' x0 char} {' x0 char} {' x0 char} {' x0 char} {' x0 char}}

その名前を使用してqGust信号をメモリに読み込みます。

qGust = logsout_DSR.getElement (“qGust”
qGust = 万博1manbetxSimulink. simulationdata . signal Package: Simulink. .SimulationData属性:名称:'qGust' PropagatedName: " BlockPath: [1x1 Simulink.Simul万博1manbetxationData. BlockPath: [1x1 Simulink.SimulationData. BlockPath]BlockPath] PortType: 'outport' PortIndex: 2 Values: [1x1 timeseries]方法,超类

モデルのルートレベルの尺寸ブロックに読み込むシミュレーションの入力信号の数据集オブジェクトにqGust信号を追加したり,qGust输入パラメーターのコンマ区切りリストの項目として指定したりできます。

参考

||

関連するトピック