2014-07-22 2 views
0

애니메이션 플롯에서 while 루프가 끊기는 데 문제가 있습니다. 본질적으로 두 개의 버튼이있는 MATLAB GUI가 있습니다. 하나의 버튼은 애니메이션 플롯을 시작합니다. 다른 버튼은 애니메이션 플롯을 중지합니다. 그러나 중지 버튼을 눌러도 while 루프가 중단되지는 않습니다. 그것은 음모를 계속합니다. 내가 누락 된 것이 있거나 단순히 갈 길이 아닌가?버튼을 누른 상태에서 while 루프를 벗어 났습니까? - MATLAB GUI

% Infinite Loop 
i = 1; 
flag = true; 

% My attempt at breaking out of the while loop. ---------------------- 
if get(handles.btnStopSim, 'Value') == 1 
    flag = false; 
end 
%--------------------------------------------------------------------- 

while flag 
    % Update Point 
    set(hLine, 'XData', xInit(1, i), 'YData', yInit(1, i)) 
    set(hLine2, 'XData', xInit(2, i), 'YData', yInit(2, i)) 
    set(hLine3, 'XData', xInit(3, i), 'YData', yInit(3, i)) 
    set(hLine4, 'XData', xInit(4, i), 'YData', yInit(4, i)) 
    set(hLine5, 'XData', xInit(5, i), 'YData', yInit(5, i)) 
    set(hLine6, 'XData', xInit(6, i), 'YData', yInit(6, i)) 
    set(hLineTarget, 'XData', Target(1), 'YData', Target(2)) 

    drawnow 

    pause(delay) 
    i = rem(i + 1, numPoints) + 1; 
    if ~ishandle(hLine), break; 
    end 
    if ~ishandle(hLine2), break; 
    end 
    if ~ishandle(hLine3), break; 
    end 
    if ~ishandle(hLine4), break; 
    end 
    if ~ishandle(hLine5), break; 
    end 
    if ~ishandle(hLine6), break; 
    end 
end 

while 루프의 항목은 궤도 데이터입니다. 표준 자료 ...

더 많은 정보가 필요하면 알려주십시오.

감사합니다.

답변

2

순차적입니다. while 루프를 종료하려면 버튼의 콜백에서 플래그를 확인/변경해야합니다. 물론, 두 기능 모두에서 액세스 할 수있는 전역으로 flag을 정의하십시오.

뭔가 예를 들어

function btnStopSim_Callback(hObject, eventdata, handles)\ 
    global flag 
    flag = false; 
버튼의

및 주요 기능의 코드의 나머지

있다.

+1

예! 정말 고맙습니다! 나는 지금 몇 시간 동안 그 일을 해왔다. – Ornusashas

관련 문제