2014-01-26 1 views
0

나는 MATLAB 가이드 프로젝트를 가지고 있습니다. 동일한 .m 파일에 정규 함수와 콜백이 혼합되어 있습니다.MATLAB 가이드 콜백과 함수 사이에서 처리

콜백 내에서 함수를 호출하고 함수가 for 루프를 통해 실행되므로 문자열 상자를 업데이트하고 싶습니다.

get_color 기능이 동일한 .m 파일 내에 위치
[color] = get_color(images, handles); 
set(handles.ProcessImage, 'string', 'Processing Complete'); 

function [color_corrections] = get_color(images, handles) 

[n, ~, ~, ~] = size(images); % Find the number of images 

for imgIdx=1:n % For each image 

    set(handles.ProcessImage, 'String', 'Processing Image #'); 

end 
end 

문제는 handles.ProcessImage 그런이다 콜백 (추출물 도시) I이 함수를 호출에서

다음은 예이다 for 루프 중에 업데이트되지 않지만 함수에서 반환하면 'Processing Complete'에 기록됩니다.

의견이 있으십니까? 매트랩되지는 루프의 완성되면 즉, 다시 시간이 될 때까지 GUI를 업데이트 귀찮게 끝 있도록

덕분에, 꽉 루프에서 TommyMac

답변

1

는 계산이 우선합니다. 당신과 같이 문자열을 업데이트 한 후 drawnow 호출하여 GUI 업데이트를 강제 할 수 루프의 코드가 짧다 그러나 많은 반복이있는 경우

set(handles.ProcessImage, 'String', 'Processing Image #'); 
drawnow; % force the new string to be rendered 

, 당신은 엄청난 성능 저하를 취할 수 있음을 유의하십시오. 상대적으로 반복 횟수가 적지 만 시간이 오래 걸리면 차이를 느끼지 않아야합니다.

+0

안녕하세요, 모든 것이 호출되고 올바르게 작동합니다. 루프 중에 업데이트 할 수 있습니까? 어쩌면 스레딩 방식을 사용하고 있을까요? – tomdertech

+0

@ user3238504 죄송합니다. 나는 모든 설명에서 대답을 숨겼습니다. 업데이트 됨. – Notlikethat

+0

이 내 문제가 해결되었습니다. 많은 감사. – tomdertech