MATLABGUIでウェイトバーを更新する際に問題が発生しました。
期待どおりに機能する簡単な例を作成しました。
steps = 5;
hWaitBar = waitbar(0, 'Testing...');
for i = 1:steps
waitbar(i/steps, hWaitBar);
pause(1);
end
close(hWaitBar);
ただし、GUIでこの構造を使用すると...
numSteps = %calculated
hWaitBar = waitbar(0, 'Processing...');
if %conditional
for i = 1:numSteps
waitbar(i/numSteps, hWaitBar)
% additional processing
end
else %conditional
% additional processing
end
close(hWaitBar);
...ウェイトバーは、最初のforループの反復でのみ正しく表示されます。
2番目の相互作用は実行で失敗します:
Error using waitbar(109)
Improper arguments for waitbar.
- ウェイトバーの進行値が1を超えないことを確認しました。
- if/elseループの外側までウェイトバーが閉じられていないことを確認しました。