如何在MatLab图形界面中停止执行
有时我的程序运行时间太长,所以我想知道用户是否可以随时从图形界面停止程序如何在MatLab图形界面中停止执行,matlab,matlab-guide,Matlab,Matlab Guide,有时我的程序运行时间太长,所以我想知道用户是否可以随时从图形界面停止程序 我尝试过,但是当程序运行一个函数时,它不会读取另一个函数(例如,用户会说它停止的函数)。Matlab中的停止运行命令是ctrl+c或ctrl+break,但是如果程序导致Matlab崩溃,它可能不会接受这些命令,您必须强制关闭程序。运行程序时,在命令窗口中尝试ctrl+c,它将停止执行 嗯。。。图形界面是否花费的时间太长?您可以尝试在代码之间添加中断,以确定是什么减慢了进程。在开始时添加tic,并在需要计时的位置添加toc
我尝试过,但是当程序运行一个函数时,它不会读取另一个函数(例如,用户会说它停止的函数)。Matlab中的停止运行命令是ctrl+c或ctrl+break,但是如果程序导致Matlab崩溃,它可能不会接受这些命令,您必须强制关闭程序。运行程序时,在命令窗口中尝试ctrl+c,它将停止执行
嗯。。。图形界面是否花费的时间太长?您可以尝试在代码之间添加中断,以确定是什么减慢了进程。在开始时添加tic,并在需要计时的位置添加toc。如果您确实需要类似于停止按钮的按钮,唯一的选择是在长期运行的流程中执行检查,该检查经常询问是否应该停止 一个小小的反例:
function teststop
f = figure('pos', [0,0,200,100],...
'menubar', 'none',...
'toolbar', 'none');
movegui(f, 'center');
c = uiflowcontainer(f, 'FlowDirection', 'topdown');
uicontrol(c, 'style', 'pushbutton', 'string', 'start', 'callback', @start);
uicontrol(c, 'style', 'pushbutton', 'string', 'stop', 'callback', @stop);
end
function start(hObject,~)
fig = ancestor(hObject, 'figure');
setappdata(fig, 'stop', false);
% disable another start
set(hObject, 'Enable', 'inactive');
count = 0;
% increment counter as long as we're not told to stop
while ~getappdata(fig, 'stop')
count = count+1;
% a tiny pause is needed to allow interrupt of the callback
pause(0.001);
end
fprintf('Counted to: %i\n',count);
% re-active button
set(hObject, 'Enable', 'on');
end
function stop(hObject, ~)
disp('Interrupting for stop');
% set the stop flag:
setappdata(ancestor(hObject, 'figure'), 'stop', true);
end
只需将其保存到teststop.m
并运行即可。
请注意,在任何情况下都需要暂停(0.001),以便中断回调。如果没有暂停呼叫,上述操作将无法工作
停车检查当然需要时间,所以我建议检查不要太频繁
或者,如果您的处理是周期性的,比如等待输入或其他事情发生,那么您可以使用
计时器来实现它,该计时器可以轻松停止。我认为问题在于图形界面的用户。他不能按ctrl+c。。。