2017-04-13 3 views
0

많은 수의 중첩 된 함수로 구성된 Matlab의 코드를 사용하고 있습니다. 이러한 함수의 상당수는 progressbars입니다. 어떤 Matlab 명령이나 어떤 가능성이 보이지 않습니까? progressbars이 표시되고, 호출되지 않은 모든 행을 찾아서 주석 처리/제거하지 않아도됩니까?진행률 표시 줄 사용 안 함 Matlab

+0

이 문제에 대해 이야기하고 있습니까? https://nl.mathworks.com/help/matlab/ref/waitbar.html 또는 맞춤 텍스트 기반의 것들? – Lanting

+0

함수는 'progressbars'를 표시하는 간단한 코드로 설명 할 수 있습니까? – Arpssss

+0

[progressbar] 유틸리티 [파일 교환] (https://uk.mathworks.com/matlabcentral/fileexchange/6922-progressbar)에 대해 이야기하고 있습니까? – Wolfie

답변

2

귀하의 의견을 말씀 드리면 많은 기능이 waitbar입니다.

자신의 waitbar.m으로 'waitbar'기능을 오버로드하여 검색 경로에서 높은 값을 유지할 수 있습니다. 이것은 일반적으로 좋은 생각이 아니며 나중에 (또는 다른 사람이 코드를 사용하는) 대기 표시 줄을 사용하려고 할 때 문제가 발생할 수 있지만 나타나지는 않습니다.

또 다른 당신이/오프 waitbar 상태를 전환 할 수있는 당신의 자신의 중간 기능을 만드는 것입니다 비활성화 방법 (내에서 바람직) :

function h = mywaitbar (varargin) 
    % preallocate output 
    h = []; 
    % use an internal persistent variable 
    persistent active 
    % by default set to true 
    if isempty (active); active = true; end 
    % Check to see if its a control call 
    if nargin == 1 && ischar (varargin{1}) 
    % is it a call to disable it? 
    if strcmp (varargin{1}, '**disable**') 
     active = false; 
    else 
     active = true; 
    end 
    return 
    end 
    if active 
    h = waitbar (varargin{:}); 
    end 
end  
이의 단점은 당신이 찾아야 할 것입니다

모든 waitbar 명령을 새로운 함수 'waitbar'로 바꾸십시오. 그러나 이것은 한 번만 수행하는 작업입니다.

그때까지 waitbar 모든 미래의 호출을 비활성화

mywaitbar ('**disable**') 

은 당신의 코드를 실행하고 더 waitbar는 표시되지 않습니다. Matlab을 다시 시작하거나 (clear all을 호출 할 때까지) 변수를 사용하면 상태가 유지됩니다. '모두 지우기'를 중지하려면 재설정시 mlock을 사용할 수 있습니다.

for ii=1:10 
    h = mywaitbar (ii); 
    fprintf ('test with waitbar %i\n', ii); 
end 

는 이제 waitbar 기능을 비활성화 :

mywaitbar ('**enable**') 

그것은 다음 코드를 사용하여 테스트하려면 :

mywaitbar ('**disable**') 
for ii=1:10 
    h = mywaitbar (ii); 
    fprintf ('test with waitbar disabled %i\n', ii); 
end 

당신은 코드 것을 볼 수

는 waitbar을 다시 활성화하려면 위의 waitbar 표시되지 않고 실행됩니다.

+0

답변 해 주셔서 감사합니다. 내가 올바르게 이해했다면 다른 사람들을 억제하기 위해 코드 실행 전에 대기 바 (waitbar)를 열 것을 제안합니다. 어떻게해야합니까? 이 명령은 모든 중첩 된 waitbars를 시작합니다. total = r.GetResult ('a'). 웨이트 바를 표시하지 않으려면이 명령 앞에 무엇을 써야합니까? 고마워요 – David

+0

아니, 그게 내가 제안하는 건 아니에요, 기능을 저장하고 내가 어떻게 작동 볼 추가 한 테스트를 실행합니다. – matlabgui

+0

하지만 제 문제는 진행률 표시 줄이 초기화되는 코드의 각 부분을 찾을 수 없다는 것입니다. 필요한 것은 코드 실행 전에 대기 바를 열어 다른 것들을 억제하는 것입니다. 어떻게하는지 아십니까? – David