Кнопка отмены Matlab официант не отвечает - PullRequest
0 голосов
/ 06 апреля 2019

Я использую встроенную функцию 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
...