Matlab GUI 秒表

标签 matlab timer stopwatch

我是一名 matlab 初学者,在编写我的第一个秒表 GUI 时遇到了困难。我想创建 6 个不同的按钮,每个按钮包含一个独立的秒表。这个想法是,如果我按下一个按钮,计时器就会启动,测量该按钮(toogle 按钮)打开的时间,并将此信息保存在 .txt 文件中。我设法创建了一个创建并保存 .txt 模板的函数。然而,我很难如何为每个按钮实现秒表...... 我为此使用了 tic 和 toc 函数,但收到错误消息,表明我没有正确使用它。

function toogle_Tickets_Callback(hObject, eventdata, handles)
% hObject    handle to toogle_Tickets (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

a = get(hObject,'Value');
start = tic;
stop = toc;
if a == 1
start;

elseif a == 0
stop;

end

我知道这可能看起来微不足道,但我不知道如何做得更好。如有任何帮助,我们将不胜感激!

最佳答案

这里有两个问题。第一个是 tic 和 toc 函数的使用。使用 start = tic; 您已经启动了计时器并运行,因此您不需要(也不能)使用 start 启动它。现在这个计时器称为 start,您可以使用 elapsedTime = toc(start) 停止它。这样,耗时就保存在变量 elapsedTime 中,您可以将其写入,例如到显示器。

下一个问题是start是一个局部变量,因此它在函数调用后被删除,并且在调用toc时无法访问它。有两种方法可以解决这个问题:第一种是通过在函数开头调用 global start 使其成为全局变量。当您有多个实例时,这会导致问题,因此这不是最佳解决方案。最好将变量添加到当前图窗的句柄中。回调函数中的handles参数是图窗句柄。您可以通过handles.variable = value向其添加变量。然后您需要通过guidata(hObject,handles)更新句柄。

更小的东西:根据 Mathworks,最佳实践是将切换按钮的值与按钮​​的 MaxMin 属性进行比较,即 get(hObject,'Max').

最后一个细节:最好的做法是为变量提供有意义的名称,因此 a 可能不是一个好的选择。当你调用它时,例如buttonState更清楚这个变量中保存的是什么。

总而言之,这给出了:

function toogle_Tickets_Callback(hObject, eventdata, handles)
% hObject    handle to toogle_Tickets (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

buttonState = get(hObject,'Value');

if buttonState == get(hObject,'Max')
    handles.start = tic;
    guidata(hObject,handles);
elseif buttonState == get(hObject,'Min')
    elapsedTime = toc(handles.start);
end

关于Matlab GUI 秒表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541580/

相关文章:

c# - 计时器上耗时?

javascript - 有一个可以计算秒和毫秒的计时器

matlab - 在背景中绘制网格

matlab - 位置条分组条形图matlab

linux - 从命令行启动 matlab 后,linux 终端中缺少某些内容

javascript - 功能效率测量javascript

c# - 获取 System.Windows.Forms.Timer 的值?

matlab - 在 MATLAB 中避免缓慢的 for 循环

Java 动画 JLabel

Javascript 删除 div 元素