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

matlab.io.datastore.sdidatastore.readall

クラス: matlab.io.datastore.sdidatastore
パッケージ: matlab.io.datastore

sdidatastore からすべてのデータを読み取る

構文

data = sdi_ds.readall

説明

data = sdi_ds.readall は、matlab.io.datastore.sdidatastoresdi_ds 内のすべてのデータをメモリに読み取り、timetabledata を返します。readall は、matlab.io.datastore.sdidatastore によって参照される信号がメモリに収まる場合のみ使用してください。

出力引数

すべて展開する

matlab.io.datastore.sdidatastore 内のすべてのデータ。timetable で返される。

すべて展開する

matlab.io.datastore.sdidatastore は、シミュレーション データ インスペクター リポジトリ内の信号データを参照します。信号が大きすぎてメモリに入りきらない場合、matlab.io.datastore.sdidatastore を使用して手動でデータをインクリメンタルに処理するか、信号のインクリメンタル処理をユーザーに代わって実行する tall timetable を作成します。この例は、matlab.io.datastore.sdidatastore を使用してデータを処理する方法を示します。

信号の matlab.io.datastore.sdidatastore の作成

sldemo_fuelsys モデルをシミュレートします。このモデルは、複数の信号をログに記録して、シミュレーション データ インスペクター リポジトリ内にデータを作成するよう構成されています。

sim('sldemo_fuelsys')

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、信号の信号 ID を取得します。

runCount = Simulink.sdi.getRunCount;

latestRunID = Simulink.sdi.getRunIDByIndex(runCount);

latestRun = Simulink.sdi.getRun(latestRunID);

speedSigID = latestRun.getSignalIDByIndex(4);

信号 ID を使用して、speed 信号の matlab.io.datastore.sdidatastore を作成します。

speedSDIds = matlab.io.datastore.sdidatastore(speedSigID);

データ ストアの内容の確認

matlab.io.datastore.sdidatastoreName プロパティをチェックして、想定のとおりの内容であることを確認します。

speedSDIds.Name
ans = 
'map'

また、preview メソッドを使用して、信号内の最初の 10 個のサンプルが正しく見えることを確認することもできます。

speedSDIds.preview
ans=10×2 timetable
         Time          Data  
    ______________    _______

    0 sec               0.589
    0.00056199 sec    0.58772
    0.0033719 sec     0.58148
    0.01 sec          0.56765
    0.02 sec          0.54897
    0.03 sec          0.53264
    0.04 sec          0.51837
    0.05 sec          0.50594
    0.055328 sec          0.5
    0.055328 sec          0.5

matlab.io.datastore.sdidatastore による信号データの処理

信号が大きすぎてメモリに入りきらない場合、readData メソッドを使用して、シミュレーション データ インスペクター リポジトリからデータのチャンクを読み取り、データをインクリメンタルに処理することができます。hasdata メソッドを、信号全体をインクリメンタルに処理する際の while ループの条件として使用します。たとえば、信号の最大値を見つけます。

latestMax = [];

while speedSDIds.hasdata
    
    speedChunk = speedSDIds.read;
    speedChunkData = speedChunk.Data;
    latestMax = max([speedChunkData; latestMax]);
    
end

latestMax
latestMax = 0.8897

各読み取り操作で、read メソッドは、読み取り位置を次の読み取り操作の開始位置に更新します。matlab.io.datastore.sdidatastore の一部またはすべてを読み取った後、読み取り位置をリセットして、信号の先頭から再度開始することができます。

speedSDIds.reset

メモリ内の信号データの処理

matlab.io.datastore.sdidatastore で参照された信号がメモリに収まる場合、read メソッドでデータをインクリメンタルに読み込んで処理する代わりに、readall メソッドを使用してすべての信号データをメモリに読み込んで処理することができます。readall メソッドは、すべての信号データを含む timetable を返します。

speedTimetable = speedSDIds.readall;

speedMax = max(speedTimetable.Data)
speedMax = 0.8897

代替方法

信号がメモリに収まる場合、Simulink.sdi.Signal など、シミュレーション データ インスペクターのプログラムによるインターフェイスの他のクラスや関数を使用して、シミュレーション データにアクセスし、処理することができます。

R2017b で導入