このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
hasdata
クラス: matlab.io.datastore.sdidatastore
名前空間: matlab.io.datastore
データが読み取り可能かどうかを判別
構文
tf = sdi_ds.hasdata
説明
matlab.io.datastore.sdidatastore
、sdi_ds
に読み取り可能なデータがある場合、
は logical tf
= sdi_ds.hasdata1
を返します。sdi_ds
に読み取り可能なデータがない場合、hasdata
は 0
を返します。
出力引数
tf
— データを利用できるかを示すインジケーター
論理値
matlab.io.datastore.sdidatastore
に読み取り可能なデータがあるかどうかの論理インジケーター。データが利用できる場合、tf
は 1
になります。データが利用できない場合、tf
は 0
になります。
例
matlab.io.datastore.sdidatastore
を使用した信号データの処理
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.sdidatastore
の Name
プロパティをチェックして、想定のとおりの内容であることを確認します。
speedSDIds.Name
ans = 'map'
また、preview
メソッドを使用して、信号内の最初の 10 個のサンプルが正しく見えることを確認することもできます。
speedSDIds.preview
ans=10×1 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
バージョン履歴
R2017b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)