Streaming#
Push samples to a dataset while a test runs, one block at a time.
Pushing a block#
push takes an N-by-C matrix, one column per channel, and one timestamp column shared by all
of them. Fill a preallocated matrix and push it whole.
s = ds.stream();
chans = [s.channel("rpm"), s.channel("egt"), s.channel("psi")];
t = zeros(1000, 1, 'int64');
v = zeros(1000, 3);
for i = 1:1000
t(i) = nominal.now();
v(i, :) = readSample();
end
s.push(chans, t, v);
delete(s); % flushes and waits until the data lands
push blocks when points arrive faster than the network can send them. If your acquisition
loop can’t stall, produce the data on a separate thread.
Timestamps#
Use nominal.now() and int64 nanoseconds for streaming timestamps. datetime doesn’t hold
nanoseconds, so a round trip through it loses precision. Timestamps are taken as given:
int64(0) is the epoch.
Closing the stream#
Deleting the stream, or clearing the last variable that holds it, sends what is still buffered
and waits until it has landed. Call delete(s) when the data must be in Nominal before you move
on. The points can take a moment to appear in Nominal after that.
Shutdown#
You don’t need to call nominal.shutdown(). clear mex, clear all and quitting MATLAB all
run it for you.
Call it to shut the toolbox down at a known point, such as the end of a long script. Every
nominal object you hold stops working. New objects work as normal.