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
Chinese
US English (US)
JP Japanese
CN Chinese
KR Korean
  • Home
  • MATLAB API

API 流和 stream_to_file | MATLAB

Written by Nadia Hauser

Updated at April 7th, 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:Lab
    Moku:Lab逻辑分析仪/码型发生器 Moku:Lab时间间隔与频率分析仪 Moku:Lab频谱分析仪 Moku:Lab PID 控制器 Moku:Lab示波器 Moku:Lab激光锁频/稳频器 Moku:Lab相位表 Moku:Lab数字滤波器 Moku:Lab任意波形发生器 Moku:Lab波形发生器 Moku:Lab频率响应分析仪 Moku:Lab FIR 滤波器生成器 Moku:Lab锁相放大器 Moku:Lab常见问题解答 Moku:Lab数据记录器
  • Moku:Go
    Moku:Go锁相放大器 Moku:Go逻辑分析仪和码型发生器 Moku:Go示波器和电压表 Moku:Go频谱分析仪 Moku:Go波形发生器 Moku:Go时间间隔与频率分析仪 Moku:Go数字滤波器 Moku:Go FIR 滤波器生成器 Moku:Go激光锁频/稳频器 Moku:Go任意波形发生器 Moku:Go频率响应分析仪 Moku:Go数据记录器 Moku:Go常见问题解答 Moku:Go相位表 Moku:Go电源 Moku:Go PID 控制器
  • Moku:Pro
    Moku:Pro波形发生器 Moku:Pro时间间隔与频率分析仪 Moku:Pro逻辑分析仪/码型发生器 Moku:Pro激光锁频/稳频器 Moku:Pro锁相放大器 Moku:Pro频谱分析仪 Moku:Pro数据记录器 Moku:Pro任意波形发生器 Moku:Pro多仪器并行模式 Moku:Pro相位表 Moku:Pro FIR 滤波器生成器 Moku:Pro PID 控制器 Moku:Pro示波器 Moku:Pro频率响应分析仪 Moku:Pro常见问题解答 Moku:Pro数字滤波器
  • Python API
  • MATLAB API
  • 任意波形发生器
  • 数据记录器
  • 数字滤波器
  • FIR滤波器生成器
  • 频率响应分析仪
  • 激光锁频/稳频器
  • 锁相放大器
  • 示波器
  • 相位表
  • PID 控制器
  • 频谱分析仪
  • 时间间隔与频率分析仪
  • 波形发生器
  • 逻辑分析仪/码型发生器
  • 多仪器并行模式
  • Moku云编译
  • Moku常见问题解答
  • LabVIEW API
+ More

流媒体选项

有关 API 的更多详细信息,请访问我们的 数据记录器 | API 参考 

streaming stream_to_file MATLAB 数据流示例

stream_to_file 方法

当您想要记录数据但又不想使用 mokucli 在外部进行转换时,此功能非常有用,请参阅API 下载日志文件并转换 | MATLAB了解此用例。这会在下载文件时对其进行转换,并在流式传输会话完成后即可进行分析。

% moku example: Datalogger Stream to File
% (c) 2025 Liquid 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;

示例输出:

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]
stream_to_file 数据 MATLAB 的绘图

对于流式传输其他文件类型:

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);

流式传输方法

当您想要实时分析数据而不是等待流会话完成时,此方法很有用。

% moku example: Datalogger Streaming
% (c) 2025 Liquid 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();
流数据 MATLAB 图表

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • MATLAB 数据记录器并保存日志文件
  • 在哪里可以找到 MATLAB API 的文档?
  • 开始使用 MATLAB
  • 我可以在同一个 MATLAB 脚本中控制多个Moku设备吗?
  • 如何将Moku:Lab的数据记录器中的 .CSV 文件导入 MATLAB?

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