主要内容

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

matlab.io.datastore.sdidatastoreクラス

パッケージ:matlab.io.datastore

シミュレーションデータインスペクター信号のデータストア

説明

matlab.io.datastore.sdidatastoreオブジェクトを使用すると,シミュレーションデータインスペクターにログ記録された信号のうち,大きすぎてメモリに入りきらない信号にアクセスできます。sdidatastoreオブジェクトは、単一の信号のデータを参照します。メソッドは、sdidatastoreオブジェクトによって参照された信号データを,各チャンクが常にメモリに収まるようにチャンク単位で読み取ります。sdidatastoreオブジェクトを使用して、信号データの 高时间表を作成できます。高的配列の使い方の詳細については、高的配列を参照してください。

メモ

matlab.io.datastore.sdidatastoreは,並列計算をサポートしていません。并行计算工具箱™ライセンスをお持ちの場合,matlab.io.datastore.sdidatastoreから高时间表を作成する前に,地图还原程序(0)を使用して実行環境をローカル MATLAB®クライアントに設定してください。

作成

ds=dsrObj.getAsDatastore(arg)は検索基準argによって選択される金宝appSimulink.sdi.DatasetRefオブジェクトの信号のsdidatastoredsを作成します。argは,金宝appSimulink.sdi.DatasetRefオブジェクト内の目的の信号のインデックスを表す整数、または信号名を含む文字ベクトルとして指定できます。

ds=matlab.io.datastore.sdidatastore(signalID)は、指定されたsignalIDに対応する信号に対して,sdidatastoredsを作成します。

入力引数

すべて展開する

金宝appSimulink.sdi.DatasetRefオブジェクトから要素を取得するために使用される検索基準。名前ベースの検索では,argを文字ベクトルとして指定します。インデックスベースの検索では、argは整数で、目的の要素のインデックスを表します。

例:“我的信号”

例:3.

その信号に対してシミュレーションデータインスペクターによって生成された,数値信号識別子。信号を含む金宝appSimulink.sdi.Runオブジェクトのメソッドを使用するか、関数金宝appSimulink.sdi.createRunの戻り値として,信号の信号IDを取得できます。

プロパティ

すべて展開する

文字ベクトルとして指定する信号の名前。

例:“我的信号”

sdidatastoreに関連付けられた金宝appSimulink.sdi.信号オブジェクト。信号プロパティを使用すると、信号データおよびメタデータにアクセスできます。

メソッド

hasdata データが読み取り可能かどうかを判別
预览 sdidatstore内のデータのプレビューを返す
sdidatastoreからデータのチャンクを読み取る
readall 斯迪达斯托からすべてのデータを読み取る
重置 読み取り位置のリセット

コピーのセマンティクス

ハンドル。ハンドル クラスがコピー操作にどのように影響するかについては、オブジェクトのコピーを参照してください。

すべて折りたたむ

この例は,シミュレーションデータインスペクターリポジトリ内の信号の高时间表を作成する方法を示します。高的时间表を作成するには,金宝appSimulink.sdi.信号オブジェクトを使用するか、先に信号のmatlab.io.datastore.sdidatastoreを作成します。matlab.io.datastore.sdidatastoreを使用すると、メモリに入りきらない信号の信号データをインクリメンタルに読み取り、処理することができます。高时间表は、バックグラウンドでデータのチャンク化と処理を実行します。一般的に、高时间表はメモリ内のデータとよく似た方法で扱うことができます。

データの作成と信号 身份证件へのアクセス

高时间表の作成を金宝appSimulink.sdi.信号オブジェクトによって行うか,matlab.io.datastore.sdidatastoreによって行うかにかかわらず,まずはデータを作成し,対象の信号の信号IDにアクセスします。sldemo_fuelsysモデルは、モデルのシミュレーションを実行すると、シミュレーション データ インスペクター リポジトリにストリーミングされる信号をログ記録するように構成されています。

open_system (“sldemo_fuelsys”)模拟(“sldemo_fuelsys”)

次に,シミュレーションデータインスペクターのプログラムによるインターフェイスを使用して,対象の信号の信号IDにアクセスします。たとえば,自我信号にアクセスします。

runCount=Si金宝appmulink.sdi.getRunCount;latestRunID=Simulink.sdi.getrunidyindex(runCount);latestRun=Simulink.sdi.getRun(latestRunID);egoSigID=latestRun.getsignalidbyndex(7);

matlab.io.datastore.sdidatastoreを使用した 高时间表の作成

一般的に、高时间表はデータ ストアにバックアップされます。matlab.io.datastore.sdidatastoreオブジェクトを作成して、シミュレーション データ インスペクター リポジトリ内の信号データを参照します。

egoDs=matlab.io.datastore.sdidatastore(egoSigID);

データ ストアの名前をチェックして、期待通りの信号が得られたことを確認します。

egoDs.姓名
ans=‘燃料’

matlab.io.datastore.sdidatastoreから,信号データの処理に使用する高时间表を作成します。并行计算工具箱™ライセンスをお持ちの場合,高大的时间表を作成する前に,地图还原器を使用して実行環境を明示的にローカル MATLAB®セッションに設定する必要があります。matlab.io.datastore.sdidatastoreオブジェクトは、並列計算をサポートしていません。

mapreducer(0);egoTt=高(egoDs)
egoTt=Mx1高时间表时间数据1.209 0.00056199秒1.209 0.0033719秒1.209 0.01秒1.1729 0.02秒1.1409 0.03秒1.1124 0.04秒1.0873 0.05秒1.0652:::

金宝appSimulink.sdi.信号オブジェクトを使用した高时间表の作成

金宝appSimulink.sdi.信号クラスは,高大的时间表を直接作成するメソッドを持っています。データ ストアが内部的に作成されるため、データ ストアを作成する手順を省くことができます。信号 ID を使用して、自我信号の金宝appSimulink.sdi.信号オブジェクトにアクセスします。次に,可获得メソッドを使用して高时间表を作成します。

egoSig=Si金宝appmulink.sdi.getSignal(egoSigID);egoTt=egoSig.getAsTall
egoTt=Mx1高时间表时间数据1.209 0.00056199秒1.209 0.0033719秒1.209 0.01秒1.1729 0.02秒1.1409 0.03秒1.1124 0.04秒1.0873 0.05秒1.0652:::

高时间表を使用した信号データの処理

高的时间表埃戈特を使用する場合、その基となるデータ ストアがデータのチャンクを読み取って 高时间表に渡し、処理が行われます。処理が終わった後、データ ストアと 高时间表のいずれにも、メモリ内のデータは保持されません。また、高时间表は多くの演算の処理を遅延させます。たとえば、信号の平均値を計算します。

egoMean=平均值(egoTt.数据)
我是高个子吗?

関数聚集を使用して変数を評価してその値をワークスペースに書き込むか、関数を使用して結果をディスクに書き込むことができます。聚集を使用する場合は,必ず結果がメモリに収まるようにしてください。

egoMean=聚集(egoMean)
using the Local MATLAB Session: - Pass 1 of 1: Completed in 17 sec
平均值=1.3292

高时间表で複数の演算を行う場合、各ステップの結果の評価は、または聚集によって明示的に結果をリクエストするまで遅延されます。MATLABでは、評価中に 高时间表を通す回数を最適化することで、大規模な信号の処理時間を著しく短縮できます。高的配列の使い方の詳細については、メモリに収まらないデータの 高的配列を参照してください。

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

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

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

模拟(“sldemo_fuelsys”)

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

runCount = 金宝appSimulink.sdi.getRunCount;latestRunID = 金宝appSimulink.sdi.getRunIDByIndex (runCount);latestRun = 金宝appSimulink.sdi.getRun (latestRunID);speedSigID = latestRun.getSignalIDByIndex (4);

信号IDを使用して,速度信号のmatlab.io.datastore.sdidatastoreを作成します。

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

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

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

speedSDIds。名称
ans =“地图”

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

speedSDIds.preview
ans=10×1时刻表时间数据______________ _______ 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による信号データの処理

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

latestMax = [];speedSDIds。hasdata速度Chunk = speedSDIds.read; speedChunkData = speedChunk.Data; latestMax = max([speedChunkData; latestMax]);终止最晚
latestMax = 0.8897

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

速度重置

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

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

SpeedTimeline=speedSDIds.readall;speedMax=max(speedtimeline.Data)
speedMax=0.8897
R2017bで導入