Я использую встроенную функцию Matlab waitbar , а также использую встроенную опцию «CreateCancelBtn», которая добавляет кнопку отмены (чтобы я мог отменить цикл for).
Проблема в том, что когда я нажимаю кнопку "отмена", ничего не происходит , но если я нажимаю кнопку "X", процесс отменяется, как и должно (согласно Matlab "X"определено, что кнопка «действует как кнопка« отмена »).
еще один факт: проблема возникает только тогда, когда я запускаю функцию (см. ниже) из моего проекта (GUIDE UI), но когдаЯ запускаю код как самостоятельный, нет проблем.Любые идеи, как решить \ отследить проблему?
Ссылка на документ о функции панели ожидания: https://www.mathworks.com/help/matlab/ref/waitbar.html
Вот код, который я использую (из документации по математике):
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