【问题标题】:Trials Timer with Read and Write具有读写功能的试用计时器
【发布时间】:2013-07-09 07:08:35
【问题描述】:

我正在 Matlab 中创建一个 GUI,它将根据试用持续时间将数据读取和写入文本文件。用户将输入试用次数和试用持续时间以及 然后按下“开始”按钮。

例如,用户以 10 秒的持续时间输入 5 次试验。在开始第一次试用时,我需要连续读取/写入数据 10 秒,然后停止并保存文本文件。这个过程将在接下来的 5 次试验中继续进行。这是我尝试在下面实现的简短代码。

如何让计时器运行 10 秒并在该时间限制内同时读取/写入数据?

提前致谢。

        % Get Number of Trials
        number_trials = str2double(get(handles.Number_Trials,'String'));
        % Get Trial Duration
        trial_duration = str2double(get(handles.Trial_Duration,'String'));

        % Timer Counter
        global timer_cnt
        timer_cnt = 0;

        global eye_data
        eye_data = 0;

        for i = 1:number_trials
            % Set Current Trial Executing
            set(handles.Current_Trial_Text,'String',num2str(i));

            % Set Text File Specifications
            data_fname = get(handles.Data_Filename_Edit_Text,'String');
            file_fname = '.dat';
            data_fname_txt = strcat(data_fname,file_fname);

            % Timer Object
            fprintf('%s\n','Timer Started');

            % Pauses 10 Seconds
            t = timer('TimerFcn','stat=false','StartDelay',10);

            start(t);

            stat = true;
            while(stat == true)
                disp('.');
                pause(1)
            end

            fprintf('%s\n','Timer Ended');
            delete(t);

        end

【问题讨论】:

  • 那么..你有什么问题?
  • @DangKhoa 编辑后的问题。谢谢。
  • 好的,所以让我确保我理解:在您的示例中,用户指定了他想要的试验次数,以及每次试验的时间长度。然后,计时器将收集数据,直到时间结束。它会这样做num_trials 次。
  • @DangKhoa 是的,这就是我想要完成的。我尝试了您的答案(tic/toc),但 1 次试验仅执行 10 秒。怎么能做这“n”次试验?
  • 将它包裹在一个 for 循环中。我认为那会很明显。

标签: multithreading multiprocessing matlab matlab-guide


【解决方案1】:

根据我的经验,计时器通常用于“等待这段时间,然后执行foo”而不是您如何使用它,即“执行foo,直到您完成它这段时间”。

不起眼的tic/toc 函数可以为您做到这一点。

t_start = tic;
while toc(t_start) < 10
    % do data collection
end

【讨论】:

  • 请注意,您可以将tictoc 都放在循环中,或者将toc 与所需的秒数乘以循环变量进行比较。 toc &lt; 10 * i。另请注意,将tic 分配给变量并使用此变量作为输入调用toc 是可选的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 2019-08-04
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
相关资源
最近更新 更多