我使用内置的Matlab waitbar函数,还使用内置的“ CreateCancelBtn”选项,该选项添加了一个取消按钮(因此我可以取消for循环)。
问题是,当我按下“取消”按钮时,什么也没发生,但是如果我按下“ X”按钮,该过程将被取消(根据Matlab “ X”按钮的定义类似于“取消”按钮。)
另一个事实:仅当我从项目(GUIDE UI)运行函数(见下文)时,才会出现问题,但是当我独立运行代码时,就没有问题。 有什么想法可以解决\跟踪问题吗?
指向等待栏功能文档的链接:https://www.mathworks.com/help/matlab/ref/waitbar.html
这是我正在使用的代码(来自mathworks文档):
function approxpi
f = waitbar(0,'1','Name','Approximating pi...',...
'CreateCancelBtn','setappdata(gcbf,''canceling'',1)');
setappdata(f,'canceling',0);
% Approximate pi^2/8 as: 1 + 1/9 + 1/25 + 1/49 + ...
pisqover8 = 1;
denom = 3;
valueofpi = sqrt(8 * pisqover8);
steps = 20000;
for step = 1:steps
% Check for clicked Cancel button
if getappdata(f,'canceling')
break
end
% Update waitbar and message
waitbar(step/steps,f,sprintf('%12.9f',valueofpi))
% Calculate next estimate
pisqover8 = pisqover8 + 1 / (denom * denom);
denom = denom + 2;
valueofpi = sqrt(8 * pisqover8);
end
delete(f)
end