【发布时间】: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