US English (US)
JP Japanese
CN Chinese
KR Korean

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Knowledge Base Home
  • Contact Us
English (US)
US English (US)
JP Japanese
CN Chinese
KR Korean
  • Home
  • MATLAB API

API streaming and stream_to_file | MATLAB

Written by Nadia Hauser

Updated at January 28th, 2025

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Moku:Go
    Moku:Go General Moku:Go Arbitrary Waveform Generator Moku:Go Data Logger Moku:Go Digital Filter Box Moku:Go FIR Filter Builder Moku:Go Frequency Response Analyzer Moku:Go Logic Analyzer & Pattern Generator Moku:Go Oscilloscope & Voltmeter Moku:Go PID Controller Moku:Go Spectrum Analyzer Moku:Go Waveform Generator Moku:Go Power Supplies Moku:Go Lock-in Amplifier Moku:Go Time & Frequency Analyzer Moku:Go Laser Lock Box Moku:Go Phasemeter
  • Moku:Lab
    Moku:Lab General Moku:Lab Arbitrary Waveform Generator Moku:Lab Data Logger Moku:Lab Digital Filter Box Moku:Lab FIR Filter Builder Moku:Lab Frequency Response Analyzer Moku:Lab Laser Lock Box Moku:Lab Lock-in Amplifier Moku:Lab Oscilloscope Moku:Lab Phasemeter Moku:Lab PID Controller Moku:Lab Spectrum Analyzer Moku:Lab Time & Frequency Analyzer Moku:Lab Waveform Generator Moku:Lab Logic Analyzer/Pattern Generator
  • Moku:Pro
    Moku:Pro General Moku:Pro Arbitrary Waveform Generator Moku:Pro Data Logger Moku:Pro Frequency Response Analyzer Moku:Pro Oscilloscope Moku:Pro PID Controller Moku:Pro Spectrum Analyzer Moku:Pro Waveform Generator Moku:Pro Lock-in Amplifier Moku:Pro Laser Lock Box Moku:Pro Digital Filter Box Moku:Pro FIR Filter Builder Moku:Pro Phasemeter Moku:Pro Multi-instrument Mode Moku:Pro Logic Analyzer/Pattern Generator Moku:Pro Time & Frequency Analyzer
  • Python API
  • MATLAB API
  • Arbitrary Waveform Generator
  • Data Logger
  • Digital Filter Box
  • FIR Filter Builder
  • Frequency Response Analyzer
  • Laser Lock Box
  • Lock-in Amplifier
  • Oscilloscope
  • Phasemeter
  • PID Controller
  • Spectrum Analyzer
  • Time & Frequency Analyzer
  • Waveform Generator
  • Logic Analyzer & Pattern Generator
  • Multi Instrument Mode
  • Moku Cloud Compile
  • Moku general
  • LabVIEW
+ More

Table of Contents

Streaming options stream_to_file method streaming method

Streaming options

For more detailed information on the API's please visit our Datalogger | API Reference 

 streaming        stream_to_file       Data Streaming Examples for MATLAB

stream_to_file method

This is useful for when you want to log data but don't want to convert it externally using mokucli, see API download log file and convert | MATLAB for this use case. This converts the file as it is being downloaded and will be ready to analyze once the streaming session is complete.

% moku example: Datalogger Stream to File
% (c) 2025 Liquid Instruments Pty. Ltd.

% Connect to your Moku
i = MokuDatalogger('192.168.###.###', 'force_connect', false);

try
    % Set-up the Datalogger
    i.set_acquisition_mode('mode','Precision');
    i.set_samplerate(1e3);
    i.generate_waveform(1, 'Sine', 'amplitude',1, 'frequency',10e3);

    % Start a streaming session and stream to a file, include the file type in the
    %   file name; csv, hdf5, npy, or mat
    i.start_streaming('duration', 10);
    now = datetime('now', 'Format','yyyyMMdd_HHmmSS');
    file_name = 'DataStreamingData_' + string(now) + '.mat';
    i.stream_to_file(file_name);

    fprintf('Streaming to file: %s\n', file_name);
    status = i.get_stream_status();
    fprintf('Status: %s\n', status.status);
    % Track progress percentage of the data streaming session
    while strcmp(status.status, 'RUNNING')
        pause(0.5);
        status = i.get_stream_status();
    end

    % Wait for the file to become accessible
    pause(5);
    channels = 2;
    fprintf('%s\n', file_name);
catch ME
    i.relinquish_ownership();
    rethrow(ME);
end

% Close the connection to the Moku device
i.relinquish_ownership();

% Check for the file, then open the file and create data struct
if ~isfile(file_name)
    error('Streaming failed, no file received');
end
data = struct('time', [], 'ch1', []);
file = load(file_name);
data.time = file.moku.data(:, 1);
for i = 1:channels
    data.(['ch', num2str(i)]) = file.moku.data(:, i+1);
end

% Display the streamed data
keys = fieldnames(data);
for k = 1:numel(keys)
    key = keys{k};
    disp([key, ': ', mat2str(data.(key)(1:3)), ' ... [', num2str(data.(key)(end)), ']']);
end

% Plot the streamed data
fig = figure('Position', [100, 100, 1000, 300]);
hold on;
for i = 1:channels
    plot(data.time, data.(['ch', num2str(i)]), 'DisplayName', ['Channel ', num2str(i)]);
end
title('Streamed to File Data');
grid on;
xlabel('Time (s)');
ylabel('Voltage (V)');
legend show;
hold off;

Example output:

Streaming to file: DataStreamingData_20250117_103569.mat
Status: RUNNING
DataStreamingData_20250117_103569.mat
time: [0;0.001;0.002] ... [9.999]
ch1: [0.00191093314060709;0.0016939521851782;0.00161954084887839] ... [0.0017355]
ch2: [0.014444866169697;0.01442298048255;0.0143560728104148] ... [0.014131]
Plot of stream_to_file data MATLAB

For streaming to other file types:

file_name = 'DataStreamingData_' + string(now) + '.npy';
i.stream_to_file(file_name);
file_name = 'DataStreamingData_' + string(now) + '.hdf5';
i.stream_to_file(file_name);
file_name = 'DataStreamingData_' + string(now) + '.csv';
i.stream_to_file(file_name);

streaming method

This method is useful for when you want to analyze the data in real-time rather than waiting for the streaming session to complete.

% moku example: Datalogger Streaming
% (c) 2025 Liquid Instruments Pty. Ltd.
i = MokuDatalogger('192.168.###.###', 'force_connect', false);

try
    % Set-up the Datalogger
    i.set_acquisition_mode('mode','Precision');
    i.set_samplerate(100);
    i.generate_waveform(1, 'Sine', 'amplitude',1, 'frequency',10e3);

    % Stream the data for 10 seconds
    i.start_streaming('duration', 10);

    % Plot the streamed data
    fig = figure('Position', [100, 100, 1000, 300]);
    hold on;
    grid on;
    ylim([0, 0.016]);
    title('Streamed Data');
    xlabel('Time (s)');
    ylabel('Voltage (V)');
    data = i.get_stream_data();
    lh1 = plot(data.time, data.ch1, 'DisplayName', 'Channel 1');
    lh2 = plot(data.time, data.ch2, 'DisplayName', 'Channel 2');
    legend show;
    while 1
        data = i.get_stream_data();
        if ~isempty(data) & ~isempty(data.time)
            set(lh1,'XData',data.time,'YData',data.ch1);
            set(lh2,'XData',data.time,'YData',data.ch2);
            xlim([data.time(1), data.time(end)]);
            pause(0.1)
        end
    end    
catch ME
    i.relinquish_ownership();
    rethrow(ME);
end

% Close the connection to the Moku device
i.relinquish_ownership();
Plot of streaming data MATLAB

 

 

 

file storage data streaming

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • API download log file and convert | MATLAB
  • MATLAB Data Logger and saving the logfile

Sitemap

  • Moku:Lab
  • Instruments
  • Software
  • Company
  • Support
  • Store
  • Terms & Conditions
  • Privacy Policy

Offices

United States
+1 (619) 332-6230
12526 High Bluff Dr
Suite 150
San Diego, CA 92130

Australia
+61 2 6171 9730
243 Northbourne Avenue
Suite 2
Lyneham, ACT 2602

Australia
+61 03 7073 3594
700 Swanston Street
Suite 5E, Level 5
Carlton, VIC 3053

Follow us

Youtube LinkedIn

官方微信

Contact us
© 2025 Liquid Instruments. All rights reserved.

Knowledge Base Software powered by Helpjuice

Definition by Author

0
0
Expand