hasdata
Class: matlab.io.datastore.sdidatastore
Package: matlab.io.datastore
Determine if data is available to read
Syntax
tf = sdi_ds.hasdata
Description
returns logical
tf
= sdi_ds.hasdata1
if the matlab.io.datastore.sdidatastore
,
sdi_ds
, has data available to read. When
sdi_ds
does not have data available to read,
hasdata
returns 0
.
Output Arguments
tf
— Data availability indication
logical
Logical indication of whether the
matlab.io.datastore.sdidatastore
has data available
to read. When data is available, tf
is
1
. When data is not available, tf
is 0
.
Examples
Process Signal Data Using a matlab.io.datastore.sdidatastore
A matlab.io.datastore.sdidatastore
references signal data in the Simulation Data Inspector repository. When the signal is too large to fit into memory, you can use the matlab.io.datastore.sdidatastore
to incrementally process the data manually or to create a tall timetable for the signal that handles the incremental processing for you. This example shows how to process data using a matlab.io.datastore.sdidatastore
.
Create a matlab.io.datastore.sdidatastore
for a Signal
Simulate the sldemo_fuelsys
model, which is configured to log several signals, to create data in the Simulation Data Inspector repository.
sim('sldemo_fuelsys')
Use the Simulation Data Inspector programmatic interface to get the signal ID for the signal.
runCount = Simulink.sdi.getRunCount; latestRunID = Simulink.sdi.getRunIDByIndex(runCount); latestRun = Simulink.sdi.getRun(latestRunID); speedSigID = latestRun.getSignalIDByIndex(4);
Use the signal ID to create a matlab.io.datastore.sdidatastore
for the speed
signal.
speedSDIds = matlab.io.datastore.sdidatastore(speedSigID);
Verify the Contents of the Datastore
Check the Name
property of the matlab.io.datastore.sdidatastore
to verify that it matches your expectations.
speedSDIds.Name
ans = 'map'
You can also use the preview
method to check that the first ten samples in the signal look correct.
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
Process Signal Data with the matlab.io.datastore.sdidatastore
When your signal is too large to fit into memory, you can use the readData
method to read chunks of data from the Simulation Data Inspector repository to incrementally process your data. Use the hasdata
method as the condition for a while loop to incrementally process the whole signal. For example, find the maximum signal value.
latestMax = []; while speedSDIds.hasdata speedChunk = speedSDIds.read; speedChunkData = speedChunk.Data; latestMax = max([speedChunkData; latestMax]); end latestMax
latestMax = 0.8897
On each read operation, the read
method updates the read position for the start of the next read operation. After reading some or all of the matlab.io.datastore.sdidatastore
, you can reset the read position to start again from the beginning of the signal.
speedSDIds.reset
Process Signal Data in Memory
When the signal referenced by your matlab.io.datastore.sdidatastore
fits into memory, you can use the readall
method to read all the signal data into memory for processing, rather than reading and processing the data incrementally with the read
method. The readall
method returns a timetable
with all the signal data.
speedTimetable = speedSDIds.readall; speedMax = max(speedTimetable.Data)
speedMax = 0.8897
Version History
Introduced in R2017b
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de 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)